【问题标题】:Azure ServiceBus Retry DelayAzure ServiceBus 重试延迟
【发布时间】:2013-06-02 20:08:17
【问题描述】:

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

【问题讨论】:

    标签: azure queue servicebus


    【解决方案1】:

    如果您总是需要等待 2 分钟才能重新处理该特定队列的消息,您可以尝试将队列上的锁定超时配置为 2 分钟(加上您预期的处理时间消息),然后让锁过期,而不是解锁它。这样做的缺点是您需要密切关注处理时间,并在需要时延长锁定的超时时间。

    另一个选项可能是接收并完成消息,将预定递送设置为未来 2 分钟,然后重新发送消息。这样做的缺点是您需要使用它并确认它,这涉及某些风险(例如,您的进程在您有机会重新发送消息之前就死了)。

    【讨论】:

      【解决方案2】:

      "如果消息在 Peek Lock 模式下从队列中被 Peeked,那么您在消息中没有接收上下文。您可以在 Peek Lock 模式下接收消息,这将在指定的时间间隔内锁定消息队列的'lock duration'属性。锁定的消息在其锁定到期之前无法接收。因此,通过将锁定持续时间设置为2分钟并在Peek Lock模式下接收消息将解决此问题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-17
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多