【问题标题】:Recurring azure service bus queue messages重复的 Azure 服务总线队列消息
【发布时间】:2015-02-13 22:33:57
【问题描述】:

我有一个侦听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)

理论上这应该可行,但我觉得我错过了一种更明显的处理方式。有没有更好的办法?

【问题讨论】:

  • 没关系。另一种选择,您可以创建一个 Azure WebJob,但它会产生相同的结果。

标签: azure azure-servicebus-queues


【解决方案1】:

是的,这行得通,但我不推荐这种方法,比如每天触发一次。我看到的问题是:

  • 即使您提供了一个相当健康的退避策略,这仍然可能会花费事务或保持与几乎总是空的队列的连接。我认为这是一种资源浪费。
  • 如果托管此服务的任何设备出现故障,那么您的操作将不会被处理。
  • 可能会发生异常,这意味着要处理的消息没有放在第二天的队列中。

Thiago 在上面的评论中提到了运行 Azure WebJob 作为选项,我同意这一点。它可以被调度并且在需要之前不使用任何其他资源。另一种选择,特别是如果您还没有托管 Azure 网站,正在查看 Azure 自动化,它对于每天的计划应该可以正常工作(只需了解长时间运行的任务可能会被暂停,因此作为 Azure WebJob 可能会更好地工作) .

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2014-11-03
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2016-02-06
    相关资源
    最近更新 更多