我有一个订阅模式,并希望执行更新相关的逻辑,如签发新发票,发送电子邮件等。例如,用户将购买订阅今天,更新是在一年的时间。我最近一直在使用Azure队列,并且认为它会申请这样的更新。
通过使用BrokeredMessage.ScheduledEnqueueTimeUtc (http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx)将消息推送到如此长期的预定消息中,可以使用Azure队列吗?
我使用它的时间较短,比如在1分钟内发送通知,而且效果很好。
这样,我甚至可以让多个进程侦听队列,并确保只有一个进程将执行更新逻辑。这将解决许多与锁定相关的问题,因为这是通过租赁和相关特性在Azure队列中内置的。
发布于 2014-11-13 17:53:05
是的,您可以将其用于长期调度,调度消息与正常消息具有相同的保证。但是,有几件事你需要注意:
ScheduledEnqueueTimeUtc是消息在队列上可用(在数百毫秒内)但不需要传递的时候,这取决于队列的加载和状态。因此,对于业务流程来说,这是可以的,但对于时间敏感(毫秒)的使用则不是这样。在您的情况下没有问题,除非您的订阅取消是真正的时间敏感。ScheduledEnqueueTimeUtc之前访问预定的消息,它们是不可见的。从技术角度看,这很好,但就你的情况而言,如果你考虑到几年,我也会考虑其他潜在的问题:
https://stackoverflow.com/questions/26913951
复制相似问题