0

我有一个场景,其中一些消息不依赖于其他消息的完成。所以要处理一组消息有一个先决条件是先处理另一条消息。前置条件消息是一个长时间运行的过程,最多可能需要 30 分钟来处理。

我想要隐藏一条消息,让所有订阅者说 5 分钟,当我感觉到先决条件未完成时,然后在 5 分钟后再次可用,如果无法处理,则在接下来的 5 分钟内隐藏等等。

我可以看到我可以使用会话并且延迟可能是解决方案,但我不想那样做。因为这将需要维护存储以将延迟消息保存在非队列存储中。

另一种方法可能是我对消息进行峰值锁定,然后不理会它并让锁过期,以便在适当的时候它会重新出现在队列中。

有没有更好的方法来做到这一点?

4

1 回答 1

0

有几种方法可以实现这一目标。当您收到一条消息时,可以选择推迟它。这会将其从活动队列中删除,您稍后将不得不专门使用 MessageId 请求此消息。对于您的方案,可以使用计划消息(见下文),但这将涉及接收消息,然后使用以下命令安排另一条消息:http: //msdn.microsoft.com/en-us/library/windowsazure/microsoft .servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx

于 2014-03-07T14:25:16.510 回答