对于Azure Servicebus jms spring引导启动程序,是否存在属性设置以在处理失败时重新排队消息?

问题描述

我正在使用azure-servicebus-jms-spring-boot-starter来侦听来自Microsoft Azure队列的消息。 Azure Service Bus api具有一个PEEKLOCK设置 azure.servicebus.subscription-receive-mode = PEEKLOCK ,在处理消息失败的情况下,该消息会重新排队。 spring JMS侦听器是否有类似的设置?

解决方法

您可以指定Service Bus接收消息的两种不同模式:ReceiveAndDeletePeekLock

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

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

有关更多详细信息,您可以参考此article