【发布时间】:2022-01-06 07:52:46
【问题描述】:
我想编写一个应用程序,将通过 http 传入的数据存储到数据库中。 数据包含有关下一个请求将在多长时间内到达的信息,例如 10 分钟。 我需要一个在请求未及时到达时通知管理员的功能。 假设这将部署在 Azure 上,我应该如何实现这个计时器?
一个简单的实现就是(例如在 Node.js 中):
const timeoutIds = {}
app.post("/endpoint", (req, res) =>{
const {id, willArriveInXMinutes} = req.data;
clearTimeout(timeoutIds[id]); // clear timer if set
setTimeout((...params)=>alertUser(params),willArriveInXMinutes*(60*1000),id); //set a new timer
//do the needful
});
如果我将它部署在 VM 上,这很好,但最好我想使用 Web 应用服务,甚至是 Azure 函数。 在前者的情况下,我可以这样做,但在等待计时器到期时我会被收费。在后者的情况下,执行的最大长度为 10 分钟。我希望等待时间灵活,所以这也是不行的。
我想过使用事件队列,但我认为这仍然不能解决等待 X 分钟的问题(因为它是实时的),而且显然是矫枉过正。
你碰巧有一个很好的方法来实现这个吗?
【问题讨论】:
标签: azure azure-functions azure-web-app-service