首页 文章

Azure ServiceBus重试延迟

提问于
浏览
1

我正在使用Microsoft Azure ServiceBus for Queue消息使用WCF进行订阅 . 我正在尝试实现重试逻辑 . 我使用Peak / Lock来查看消息,然后必须对消息进行一些本地处理 . 如果该处理失败,我解锁消息,以便我可以尝试再次处理它 . 问题是我需要在处理尝试之间 Build 一个延迟 . 目前,它会弹回队列,然后几乎立即处理 . 尝试之间需要大约2分钟 .

2 回答

  • 1

    如果在重新处理该特定队列的消息之前总是需要等待2分钟,则可以尝试将队列上的锁定超时配置为2分钟(加上您希望它处理消息所需的时间)然后让锁过期,而不是解锁 . 这有一个缺点,你需要密切关注你的处理时间,并在需要时延长锁的超时 .

    另一个选择可能是接收和完成消息,设置将来2分钟的预定发送,然后重新发送消息 . 这有一个缺点,你需要消耗它并确认它,这涉及某些风险(例如你的进程在你有机会重新发送消息之前就已经死了) .

  • 0

    “如果消息是从队列中以Peek Lock模式窥视,那么您在消息中没有接收上下文 . 您可以在Peek Lock模式下接收消息,该模式将锁定消息,持续时间为'锁定持续时间' '队列的属性 . 锁定消息到期之前无法接收锁定的消息 . 因此,通过将锁定持续时间设置为2分钟并在Peek Lock模式下接收消息将解决此问题 .

    您可以编写自定义代码来更新“锁定持续时间”属性 . Service Bus Explorer,Serverless360等工具提供了使用图形用户界面更新属性的选项 . “

相关问题