我有一个订阅模型,并希望执行与更新相关的逻辑,如发出新发票,发送电子邮件等。例如,用户将在今天购买订阅,而续约是在一年的时间。我最近一直在使用Azure队列,并认为它适用于这种续订。使用Azure服务总线队列和BrokeredMessage.ScheduledEnqueueTimeUtc更新订阅
是否可以通过使用BrokeredMessage.ScheduledEnqueueTimeUtc
(http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx)推送消息来使用Azure队列来处理这样的长期预定消息?
我已经将它用于短期,比如在1分钟内发送通知,并且效果很好。
这样,我甚至可以有多个进程监听队列,并确保只有一个进程执行更新逻辑。这将解决很多锁定相关的问题,因为这是通过租赁和相关功能内置Azure队列的。
我正在考虑一个不同的方法来解决这个问题,因为它可以像你说的那样有很多凹陷。可能我试图使用数据库事务来达到同样的目的。我的主要问题是没有两个进程会两次处理相同的通知消息/更新。 –
不确定你是什么规模的,但如果是合理的,你可以运行日常的工作,它可以处理续约或简单地将续订消息添加到服务总线队列中。通过这种方式,您可以处理两个世界 - 可管理的时间范围和至少一次处理。 – b2zw2a