4

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

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

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

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

4

1 回答 1

8

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

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

关于 azure 消息传递的非常棒的信息源

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

  • 消息版本控制
  • 当您想将 Azure 更改为其他东西(AWS?)时会发生什么?
  • 如果您决定在明年更改 Azure Service Bus for NServiceBus 怎么办
于 2014-11-13T17:53:05.353 回答