使用Azure服务总线队列和BrokeredMessage.ScheduledEnqueueTimeUtc续订订阅
本文关键字:ScheduledEnqueueTimeUtc BrokeredMessage Azure 服务 总线 队列 使用 | 更新日期: 2023-09-27 18:30:14
我有一个订阅模型,想执行续订相关逻辑,如开具新发票、发送电子邮件等。例如,用户今天会购买订阅,一年后续订。我最近一直在使用Azure队列,我认为它会申请这样的续订。
是否可以通过使用BrokeredMessage.ScheduledEnqueueTimeUtc
推送消息来使用Azure队列(http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx)对于如此长期的预定消息?
我使用它的时间较短,比如在1分钟内发送通知,效果很好。
这样,我甚至可以让多个进程侦听队列,并确保只有一个进程执行续订逻辑。这将解决许多与锁定相关的问题,因为这是通过租赁和相关功能内置的Azure队列。
是的,您可以将其用于长期调度,调度消息与正常消息具有相同的保证。但有几件事你需要注意:
ScheduledEnqueueTimeUtc
是消息在队列上可用(在数百毫秒内)但不需要传递的时间,这取决于队列的负载和状态。因此,它适用于业务流程,但不适用于时间敏感(毫秒)的使用。在您的情况下不是问题,除非您的订阅取消确实对时间敏感- 它会影响您的存储配额(当前配额不是问题,但如果您考虑几年,这可能是个问题)
- 据我所知,您无法在
ScheduledEnqueueTimeUtc
之前访问计划消息,它们是不可见的
关于azure消息的信息来源非常棒
从技术角度来看,这很好,但在你的情况下,如果你考虑几年,我也会考虑其他潜在的问题:
- 消息版本控制
- 当你想将Azure更改为其他东西(AWS?)时会发生什么
- 如果你决定在明年更改Azure Service Bus for NServiceBus