【发布时间】:2021-08-09 02:14:10
【问题描述】:
我们使用由Java Windows service wrapper 触发的 ActiveMQ 5.14.2.1,使用 JMS 和 Spring 框架 JMS (v4.3.28) 从 Tomcat webapp 访问。
我正在尝试配置重新传递策略,以便当我们使用 session.rollback() 将消息返回到队列时,它会遵循该策略。为此,我在activemq.xml 文件中设置了redeliveryPlugin,如下所示:
<amq:redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
<amq:redeliveryPolicyMap>
<amq:redeliveryPolicyMap>
<amq:defaultEntry>
<amq:redeliveryPolicy maximumRedeliveries="20" useExponentialBackOff="true"
initialRedeliveryDelay="1000" redeliveryDelay="2000" maximumRedeliveryDelay="600000"/>
</amq:defaultEntry>
</amq:redeliveryPolicyMap>
</amq:redeliveryPolicyMap>
</amq:redeliveryPlugin>
我还更新了 broker 元素以打开 schedulerSupport:
<amq:broker brokerName="MyBroker" dataDirectory="${activemq.data}"
useJmx="false" schedulerSupport="true">
我已经尝试了基于各种documentation pages 和several SO results 的一些排列,但没有成功。无论我尝试什么,它都使用默认的重新传递行为(1 秒之间,没有指数退避,最多 6 次重试)。我知道它正在读取这个 activemq.xml 文件,因为当我放入与 XSD 不匹配的内容时,它会出错。
我必须做些什么来改变 ActiveMQ 的重新投递政策?
【问题讨论】:
-
@JustinBertram 是的。会更新。
标签: activemq spring-jms