我正在使用AMQ 5.5。我想禁用将死信发送到ActiveMQ.DLQ目标的选项,并完全丢弃(自动)将以其他方式发送到那里的消息。为此,我已如下配置代理:
<amq:destinationPolicy>
<amq:policyMap>
<amq:policyEntries>
<amq:policyEntry topic=">" producerFlowControl="false" >
<amq:deadLetterStrategy>
<amq:sharedDeadLetterStrategy processExpired="false" />
</amq:deadLetterStrategy>
</amq:policyEntry>
<amq:policyEntry queue=">" producerFlowControl="false">
<amq:deadLetterStrategy>
<amq:sharedDeadLetterStrategy processExpired="false" />
</amq:deadLetterStrategy>
</amq:policyEntry>
</amq:policyEntries>
</amq:policyMap>
</amq:destinationPolicy>
但是,我仍然看到消息正在存储在DLQ中。您能告诉我是什么原因吗?
我需要修复配置中的任何内容吗?
谢谢
哈里
最佳答案
这里面临的问题是,以上给定的配置将仅丢弃非持久性过期消息。要丢弃所有过期的消息(持久的和非持久的),请使用discardingDLQBrokerPlugin。<amq:plugins>
<amq:discardingDLQBrokerPlugin dropAll="true"/>
</amq:plugins>