我正在使用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>

10-07 12:24