0

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

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

如果客户端发送 ACK 失败,则重新传递消息。到目前为止一切都很好......但是,代理完全忽略了最大重新传递,并且它不断“无限”地重新传递消息。此外,消息永远不会移动到 DLQ。

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

非常感谢任何帮助!

4

1 回答 1

0

对于 STOMP 客户端,我假设代理不会将消息视为已传递,除非客户端对它进行 ACK 或 NACK 否则它必须假定它从未到达客户端,因此将其视为始终具有传递计数零。代理重新传递插件关闭消息的传递计数,因此如果消息被视为未传递(在这种情况下很可能是),那么它将不对消息采取任何操作。

于 2020-10-23T16:14:34.887 回答