折腾了两天才找到问题,不使用默认的ActiveMQ.DLQ,每个队列有自己的死信队列,activemq/data/activemq.xml中配置如下:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<pendingSubscriberPolicy>
<vmCursor />
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">">
<deadLetterStrategy>
<individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true" processNonPersistent="true"/>
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
主要是加粗部分,其中红色部分是指将非持久化消息也放到自己的死信队列。