使用 Azure 服务总线队列和 BrokeredMessage.ScheduledEnqueueTimeUtc 续订订阅

Kar*_*sar 4 c# azure azureservicebus azure-servicebus-queues

我有一个订阅模型,并且想要执行与更新相关的逻辑,例如开具新发票、发送电子邮件等。例如,用户今天购买订阅,并且更新是在一年的时间。我最近一直在使用 Azure Queue,并认为它会申请这样的续订。

是否可以通过使用BrokeredMessage.ScheduledEnqueueTimeUtc( http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx )推送消息来使用 Azure 队列来处理此类长期计划消息?

我在短期内使用它,比如在 1 分钟内发送通知,效果很好。

这样,我什至可以让多个进程监听队列,并确保只有一个进程会执行更新逻辑。这将解决许多与锁定相关的问题,因为它是通过租用和相关功能内置在 Azure 队列中的。

b2z*_*w2a 7

是的,您可以将其用于长期调度,调度消息与普通消息具有相同的保证。但是,您需要注意以下几点:

  • ScheduledEnqueueTimeUtc是消息将在队列上可用(数百毫秒内)但不需要传递的时间,这取决于队列的负载和状态。所以它适用于业务流程,但不适用于时间敏感(毫秒)的使用。对您来说不是问题,除非您的订阅取消对时间非常敏感。
  • 它会影响您的存储配额(当前配额并不是真正的问题,但如果您考虑几年,这可能是一个问题)
  • 据我所知,您之前无法访问预定消息ScheduledEnqueueTimeUtc,它们是不可见的。

非常棒的 azure 消息信息来源

从技术角度来看,这很好,但在您的情况下,如果您考虑多年,我还会考虑其他潜在问题:

  • 消息版本控制
  • 当您想将 Azure 更改为其他内容时会发生什么 (AWS?)
  • 如果您决定在明年更改用于 NServiceBus 的 Azure 服务总线怎么办

  • 我们是否知道可以使用“ScheduledEnqueueTimeUtc”提前多长时间安排消息并继续期望可靠的传递?几天、几周、几个月? (2认同)