ActiveMQ入门 (七) 死信队列

ActiveMQ入门 (七) 死信队列

一、ActiveMQ死信队列设置

1.消息重发的情况

A transacted session is used and rollback() is called.
A transacted session is closed before commit is called.
A session is using CLIENT_ACKNOWLEDGE and Session.recover() is called.

当一个消息被重发超过6(缺省为6)次数时,会给broker发送一个"Poison ack",这个消息被认为是a
poison pill,这时broker会将这个消息发送到死信队列,以便后续处理。

注意三点:
1)缺省持久消息过期,会被送到DLQ,非持久消息不会送到DLQ
2)缺省的死信队列是ActiveMQ.DLQ,如果没有特别指定,死信都会被发送到这个队列。
3)可以通过配置文件(activemq.xml)来调整死信发送策略。

二、死信队列配置

1.为每个队列建立独立的死信队列

修改activeMQ.xml

<destinationPolicy>
	<policyMap>
		<policyEntries>
			<policyEntry queue=">">
				<deadLetterStrategy>
					<individualDeadLetterStrategy queuePrefix="DLQ."
					useQueueForQueueMessages="true" />
				</deadLetterStrategy>
			</policyEntry>
			
			<policyEntry topic=">" >
				<pendingMessageLimitStrategy>
					<constantPendingMessageLimitStrategy limit="1000"/>
				</pendingMessageLimitStrategy>
			</policyEntry>
		</policyEntries>
	</policyMap>
</destinationPolicy>

三、RedeliveryPolicy重发策略设置

修改启动类
ActiveMQ入门 (七) 死信队列_第1张图片

你可能感兴趣的:(ActiveMQ,java,中间件)