Java 所有连接的默认RedeliveryPolicy.maximumRedeliveries的ActiveMQ配置
我正在寻找一种正确的方法,在经过一定的重试次数后将所有消息发送到死信队列 由于redeliveryPlugin只对本地存储起作用,因此破坏了我们基于JDBC的HA配置,因此我们决定将所有消息运行到DLQ中Java 所有连接的默认RedeliveryPolicy.maximumRedeliveries的ActiveMQ配置,java,activemq,spring-jms,Java,Activemq,Spring Jms,我正在寻找一种正确的方法,在经过一定的重试次数后将所有消息发送到死信队列 由于redeliveryPlugin只对本地存储起作用,因此破坏了我们基于JDBC的HA配置,因此我们决定将所有消息运行到DLQ中 individualDeadLetterStrategy目标配置在这里很方便: <destinationPolicy> <policyMap> <policyEntries> &
individualDeadLetterStrategy
目标配置在这里很方便:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" >
<deadLetterStrategy>
<individualDeadLetterStrategy
queuePrefix="DLQ."
useQueueForQueueMessages="true" />
</deadLetterStrategy>
</policyEntry>
<policyEntry queue=">" >
<deadLetterStrategy>
<individualDeadLetterStrategy
queuePrefix="DLQ."
useQueueForQueueMessages="true" />
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
您是对的,该插件在主题中无法正常工作,因为重新发送消息时启用了持久性的persistenceAdapter会将其视为重复并丢弃。如果没有持久性,还有另一个问题,即消息可能被发送并标记为已传递给消费者,而不是 您只能选择删除
defaultEntry
,并尝试只向队列添加一个,以便将主题未激活的消息发送到DLQ
您的日志中肯定有类似这样的内容
游标被重复发送…
重复消息添加尝试被拒绝。目的地…
为什么您说这似乎只适用于特定队列。此配置适用于所有目的地。不,事实上,redeliveryPlugin上的插件配置对redeliveryPolicy的maximumRedeliveries值没有影响。如果我将jms.redeliveryPolicy.maximumRedeliveries
参数放入代理URI中,我可以看到不同之处。重新交付插件配置没有显著效果。您是否启用了代理的调度程序支持?请看这里的最后一行:如果您启用了插件并且没有调度程序,那么代理将无法启动。是,计划程序已启用。但是我不想使用调度程序,我想在XML@HassenBennour关于“仅针对特定队列”:仅当我将队列名称放入policyEntry中时,它才起作用。然后,redeliveryplugin为该特定队列工作。这不会对经纪人的再交付政策产生全球性影响。嗨,谢谢你的回答,但它没有抓住要点。我想知道,是否有一种方法可以全局设置代理的RedeliveryPolicy(而不是RedeliveryPlugin)的默认值。目前,您只能在URI或代码中设置策略。我不想使用redelivery插件,因为它使用schedulerDB,schedulerDB存储在本地文件(KahaDB)中,而不管配置了JDBC还是LevelDB持久性。这会破坏HA设置,因为从属调度器没有传递消息。您在哪里找到此信息?我不想使用重新传递插件,因为它使用schedulerDB,schedulerDB存储在本地文件(KahaDB)中,而不管配置的JDBC或LevelDB持久性如何。据我所知,RedeliveryPlugin只是进行重新传递,而不是存储消息。它在ActiveMQ网站上有文档记录,并且存在描述它的问题。您也可以在leveldb配置页面上看到它。没有关于schedulerDB和jdbc存储的安全HA故障切换的文档。看到和
<plugins>
<redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
<redeliveryPolicyMap>
<redeliveryPolicyMap>
<defaultEntry>
<redeliveryPolicy maximumRedeliveries="0" initialRedeliveryDelay="1001" redeliveryDelay="1001" />
</defaultEntry>
</redeliveryPolicyMap>
</redeliveryPolicyMap>
</redeliveryPlugin>
</plugins>