使用Azure Service Bus Queue和BrokeredMessage.ScheduledEnqueueTimeUtc续订订阅

时间:2014-11-13 16:43:04

标签: c# azure azureservicebus azure-servicebus-queues

我有订阅模式,并希望执行与续订相关的逻辑,例如发出新发票,发送电子邮件等。例如,用户今天会购买订阅,续订是在一年的时间内。我最近一直在使用Azure Queue,并认为它适用于这样的续订。

是否可以通过使用BrokeredMessage.ScheduledEnqueueTimeUtchttp://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx)针对此类长期预定消息推送消息来使用Azure队列?

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

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

1 个答案:

答案 0 :(得分:3)

是的,您可以将其用于长期安排,预定的消息与普通消息具有相同的保证。但是你需要注意的事情很少:

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

Extremely awesome source of informations on azure messaging

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

  • 邮件版本控制
  • 当您想将Azure更改为其他内容时会发生什么(AWS?)
  • 如果您决定在明年更改NServiceBus的Azure Service Bus
  • ,该怎么办?