在项目使用activemq时,客户端发送消息而没有得到回复(在不考虑消费者是什么问题的情况下),导致持久化消息不断积压而得不到释放,最后造成队列堵塞而。。。
可以在配置文件中配置消息的过期时间和死信处理来防止消息的积压
配置消息过期时间使用timeStampingBrokerPlugin插件ttlCeiling限制消息的过期时间,zeroExpirationOverride表示消息的过期时间。
zeroExpirationOverride值在大于ttlCeiling值时zeroExpirationOverride=ttlCeiling
<span style="white-space:pre"> </span><plugins>
<timeStampingBrokerPlugin ttlCeiling="60000" zeroExpirationOverride="60000" />
</plugins>
配置死信处理可以有多重配置,我使用了不把过期消息保存在死信队列而是直接丢弃
<span style="white-space:pre"> </span><destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" producerFlowControl="false"
memoryLimit="1mb">
<!-- 设定不保存过期消息到死信队列 -->
<span style="color:#ff0000;"><deadLetterStrategy>
<sharedDeadLetterStrategy processExpired="false"></sharedDeadLetterStrategy>
<span style="white-space:pre"> </span></deadLetterStrategy></span>
<pendingQueuePolicy>
<fileQueueCursor />
</pendingQueuePolicy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
有什么错误的话请指出,谢谢!!!