【问题标题】:Temporarily hiding a message in azure service bus queue/topic暂时隐藏 Azure 服务总线队列/主题中的消息
【发布时间】:2014-04-09 01:20:05
【问题描述】:

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

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

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

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

有更好的方法吗?

【问题讨论】:

  • 为什么不将此消息插入另一个队列,并在处理完前置条件消息后将其出列?
  • 这是你用的东西吗?
  • 不使用 peek-lock,这是一个想法。

标签: azure servicebus azure-servicebus-queues


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多