0

知道如何在消息到达死信队列后获取消息的实际重新发送计数。出现,Artemis 认为这是一个新的交付,并将计数器重置为 1。

见下图: 1. 消息被 MDB 消费。2. 发生了一些不好的事情,我在上下文中调用 setRollbackOnly 直到达到最大重试次数 3。3. Artemis 向配置的DLQ 发送消息。4. DLQ Mdb 消费消息,但消息上的 JMSXDeliveryCount 读取 1 而不是3

任何想法,如何从 DLQ 中检索重试计数 3?

4

1 回答 1

0

我不相信此时有一种简单的方法可以做你想做的事。要推断原始消息的传递计数,您可以从消息中获取“_AMQ_ORIG_ADDRESS”属性,并使用该属性通过 ActiveMQServerControl#getAddressSettingsAsJSON 管理方法查询代理。该方法的输出将包含为该地址配置的“maxDeliveryAttempts”,当消息发送到死信地址时,该地址应对应于消息的 JMSXDeliveryCount。

于 2017-11-03T18:58:39.800 回答