问题描述
我正在使用azure-servicebus-jms-spring-boot-starter来侦听来自Microsoft Azure队列的消息。 Azure Service Bus api具有一个PEEKLOCK设置 azure.servicebus.subscription-receive-mode = PEEKLOCK ,在处理消息失败的情况下,该消息会重新排队。 spring JMS侦听器是否有类似的设置?
解决方法
您可以指定Service Bus接收消息的两种不同模式:ReceiveAndDelete
或PeekLock
。
在PeekLock
模式下,接收操作变为两阶段,这使得可以支持不能容忍丢失消息的应用程序。
当服务总线收到请求时,它找到要使用的下一条消息,将其锁定以防止其他使用者接收它,然后将其返回给应用程序。在应用程序完成处理后,消息(或可靠地存储它以供将来处理),它通过对收到的消息调用CompleteAsync来完成接收过程的第二阶段。当Service Bus看到CompleteAsync调用时,它将消息标记为已使用。
有关更多详细信息,您可以参考此article。