ActiveMQ 多次处理消息

ActiveMQ processing message multiple times

我想在 ActiveMQ 中设置重新传送策略。 我已将重试设置为 3 次,之后消息应发送到死信队列。但是我注意到,虽然 3 次尝试处理消息(发生异常时)被处理 多次 次。为什么?

  1. 第一次处理 - 消息被处理 13 次(1 次常规处理和 12 次重新处理)次(每次都会发生异常,因此消息最终被发送回队列 - 在第 13 次结束时)
  2. 第二次处理 - 消息处理了 5 次
  3. 第三次 - 消息被重新处理 4 次

为什么要进行额外的重新处理?我认为当消息被发送回队列时,我的监听器应该收到这条消息,然后再次尝试只处理这条消息一次。哪个参数负责此重新处理?

您很可能需要将 jms.redeliveryPolicy.maximumRedeliveries=0 添加到连接 URI。默认情况下,ActiveMQ 客户端会在客户端重试。这一切都很好,但是如果您已将代理配置为处理重试,您通常不希望客户端也这样做。只需添加选项即可。有关选项本身,请参阅 http://activemq.apache.org/redelivery-policy.html