我有订阅模式,并希望执行与续订相关的逻辑,例如发出新发票,发送电子邮件等。例如,用户今天会购买订阅,续订是在一年的时间内。我最近一直在使用Azure Queue,并认为它适用于这样的续订。
是否可以通过使用BrokeredMessage.ScheduledEnqueueTimeUtc
(http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx)针对此类长期预定消息推送消息来使用Azure队列?
我已经将它用于短期,比如在1分钟内发送通知,效果很好。
这样,我甚至可以有多个进程监听队列,并确保只有一个进程可以执行更新逻辑。这将解决许多与锁相关的问题,因为这是通过租赁和相关功能内置Azure Queue。
答案 0 :(得分:3)
是的,您可以将其用于长期安排,预定的消息与普通消息具有相同的保证。但是你需要注意的事情很少:
ScheduledEnqueueTimeUtc
是队列中消息可用(在几百毫秒内)但不需要传递的时间,这取决于队列的负载和状态。因此,它适用于业务流程,但不适用于时间敏感(毫秒)的使用。在您的情况下不是问题,除非您的订阅取消确实是时间敏感的。ScheduledEnqueueTimeUtc
之前访问预定的消息,但它们是不可见的。Extremely awesome source of informations on azure messaging
从技术角度看它很好,但在你的情况下,如果考虑多年,我也会考虑其他潜在的问题: