我有一个场景,其中一些消息不依赖于完成另一条消息。因此,处理一组消息的前提条件是应首先处理另一条消息。前提条件消息是一个长时间运行的过程,最多可能需要30分钟才能处理。
我想要隐藏一条消息,当我感觉前提条件未完成时,让所有订阅者说5分钟,然后在5分钟后再次可用,如果无法处理,则隐藏在接下来的5分钟内上。
我可以看到我可以使用会话并推迟可能是解决方案,但我不想这样做。因为这将需要维护存储以将延迟的消息保持在非队列存储中。
另一种方法是我对邮件进行峰值锁定,然后不管它,让锁定到期,以便在适当的时候它会重新出现在队列中。
有更好的方法吗?
答案 0 :(得分:0)
有几种方法可以实现这一目标。当您收到消息时可以选择推迟。这将从活动队列中删除它,您将不得不稍后使用MessageId专门请求此消息。对于您的场景,可以使用预定消息(参见下文),但这将涉及接收消息,然后使用以下内容安排另一个消息: http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx