暂时挂起:Azure服务总线消息队列

时间:2018-10-23 13:58:23

标签: message-queue azureservicebus fault-tolerance

我们正在使用Azure Service bus Message Queue处理在第三方API上执行的某些操作,如果我们关闭了第三方API,我们要做的就是暂时挂起队列,以便我们可以保留消息直到第三方服务再次开始工作,或者还有另一种方式我们可以保留消息,以便我们再次对其进行处理。

4 个答案:

答案 0 :(得分:1)

您可以将队列状态更新为 ReceiveDisabled 。这将有助于停止Azure函数触发器。

Service Bus Suspension States

答案 1 :(得分:0)

队列,主题和订阅可以暂时挂起。挂起会将实体置于禁用状态,在该状态下所有消息都保存在存储中。但是,无法删除或添加消息,并且相应的协议操作会产生错误。

暂停或重新激活可以由用户或系统执行。系统仅由于严重的管理原因(例如达到订阅支出限制)而暂停实体。禁用系统的实体无法由用户重新激活,但在解决了中止原因后将被恢复。

在门户网站中,各个实体的Properties部分可更改状态;以下屏幕截图显示了队列切换: enter image description here 注意:门户仅允许完全禁用队列(队列已挂起)。

有关更多详细信息,您可以遵循此article

答案 2 :(得分:0)

基于注释,是Azure函数正在调用可能失败的第三方API。在这种情况下,disabling Azure Function可能是一种更简单的方法-无需处理尝试,无需重试消息,无需更改Azure Service Bus命名空间/实体。一旦确定可以重新启用Azure功能,便会再次处理消息。

答案 3 :(得分:0)

在服务总线队列上使用PeekLock模式。

这样,在从队列中删除消息之前,您已经可以获取该消息并开始对其进行处理。如果第3方不可用,您可以致电AbandonAsync,它将消息重新放入队列。如果第三方保持离线状态太长时间,您的消息应该最终落入死信队列中,从那里您可以将消息移回原始队列,以便再次进行处理。

更多详细信息:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-queues-topics-subscriptions