【问题标题】:For the Azure servicebus jms spring boot starter, is there a properties setting to requeue messages if the processing fails?对于 Azure servicebus jms spring boot starter,如果处理失败,是否有重新排队消息的属性设置?
【发布时间】:2020-12-15 13:54:43
【问题描述】:

我正在使用 azure-servicebus-jms-spring-boot-starter 来监听来自 Microsoft Azure 队列的消息。 Azure 服务总线 api 有一个 PEEKLOCK 设置,azure.servicebus.subscription-receive-mode=PEEKLOCK,它在处理消息失败的情况下重新排队消息。 spring JMS监听器有类似的设置吗?

【问题讨论】:

    标签: spring-boot spring-jms azure-servicebus-queues


    【解决方案1】:

    您可以指定服务总线接收消息的两种不同模式:ReceiveAndDelete 或 PeekLock。

    在PeekLock模式下,接收操作变为两阶段,这使得支持不能容忍丢失消息的应用程序成为可能。

    Service Bus收到请求后,找到下一条要消费的消息,将其锁定以防止其他消费者收到,然后返回给应用程序。应用程序处理完消息(或将其可靠地存储以供将来处理),它通过对接收到的消息调用 CompleteAsync 来完成接收过程的第二阶段。当服务总线看到 CompleteAsync 调用时,它会将消息标记为正在使用。

    更多详情可以参考这个article。

    【讨论】:

    • 感谢您的回复。我知道 Azure 服务总线支持这两种模式,如果我直接访问服务总线 api,那么这些将是我将使用的设置。但我正在与没有这些模式的 JMS 交互。我试图找出 JMS 是否有类似的选项来模仿 Azure 提供的这两种模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2021-05-02
    • 2017-05-05
    • 1970-01-01
    • 2021-03-26
    • 2022-11-09
    • 2022-01-25
    相关资源
    最近更新 更多