AmazonMQ / ActiveMQ消息重新交付政策已忽略的最大最大交付量

问题描述

我已经如下配置ActiveMQ重新交付插件(最多4次重新交付)

  <redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
  <redeliveryPolicyMap>
    <redeliveryPolicyMap>
      <defaultEntry>
        <redeliveryPolicy initialRedeliveryDelay="5000" maximumRedeliveries="4" redeliveryDelay="10000"/>
      </defaultEntry>
    </redeliveryPolicyMap>
  </redeliveryPolicyMap>
</redeliveryPlugin>

如果客户端无法发送ACK,则重新发送消息。到目前为止,一切都很好。但是,经纪人完全忽略了max reeliveries,并且多次“无限”地不断传递消息。而且消息永远不会移到DLQ。

我也尝试使用: ?jms.redeliveryPolicy.maximumRedeliveries=4在连接URI(STOMP连接器)上,但也没有运气。

我们非常感谢您的帮助!

解决方法

对于STOMP客户端,我假设代理不会将消息视为已传递,除非客户端对消息进行了确认或否定,否则它必须假定从未将其发送给客户端,因此将其视为始终具有交货计数为零。经纪人重新交付插件会取消邮件的发送计数,因此,如果将邮件视为未送达,则在这种情况下很可能对邮件不采取任何措施。