我有一个监听Azure Service Bus Queue Messages的Windows服务,以便从我的WebApi应用程序分发处理。我还需要处理重复的任务(每晚/每周),我认为最好使用相同的系统处理。
例如,假设我有一个“CleanupDb”队列,每天午夜删除陈旧的数据库节点:
var client = QueueClient.Create("CleanupDb");
var options = /* ... */
client.OnMessage((message) => {
client.Send(new BrokeredMessage() {
ScheduledEnqueueTimeUtc = DateTime.Today.AddDays(1)
});
// do DB Cleanup
}, options)
理论上这应该有用,但我觉得我错过了一种更明显的处理方法。还有更好的方法吗?
答案 0 :(得分:1)
是的,这可行,但我不推荐这种方法,比如每天开火一次。我看到的问题是:
Thiago提到在上面的评论中运行Azure WebJob作为选项,我同意这一点。它可以被安排,并且在需要之前不使用任何其他资源。另一个选择,特别是如果您还没有托管Azure网站,正在研究Azure自动化,每天的日程安排工作正常(只需了解长时间运行的任务可能会被暂停,因此可能更好地作为Azure WebJob)。