DLQ-死信队列(Dead Letter Queue)用来保存处理失败或者过期的消息。
出现以下情况时,消息会被redelivered
- 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.
缺省的死信队列是ActiveMQ.DLQ,如果没有特别指定,死信都会被发送到这个队列。
缺省持久消息过期,会被送到DLQ,非持久消息不会送到DLQ
可以通过配置文件(activemq.xml)来调整死信发送策略。
1.不使用缺省的死信队列
缺省所有队列的死信消息都被发送到同一个缺省死信队列,不便于管理。可以通过individualDeadLetterStrategy或sharedDeadLetterStrategy策略来进行修改。如下:
' ,否则用队列名称 -->
">
...
2.非持久消息保存到死信队列
">
3.过期消息不保存到死信队列
">
4.持久消息不保存到死信队列
对于过期的,可以通过processExpired属性来控制,对于redelivered的失败的消息,需要通过插件来实现如下:
丢弃所有死信
丢弃指定目的死信
注意,目的名称使用空格分隔
The reportInterval property is used to denote how frequently do we output how many messages we have dropped - use 0 to disable.
用正则表达式过滤丢弃消息:
Notice that the destination names use regular expressions. These match the number 000..999 at the end of each destination name.
5.死信队列消息的属性
死信队列中的消息,会增加几个属性,比如原过期时间(originalExpiration),原originalDeliveryMode等
参考:
DLQ处理说明:
http://activemq.apache.org/message-redelivery-and-dlq-handling.html
individualDeadLetterStrategy属性说明:
http://fusesource.com/docs/broker/5.3/configref/http.activemq.apache.or/element/individualdeadletterstr.html
sharedDeadLetterStrategy属性说明:
http://fusesource.com/docs/broker/5.3/configref/http.activemq.apache.or/element/shareddeadletterstrateg.html
redelivery属性说明:
【ActiveMQ的消息重发与死信管理(DLQ)】 http://activemq.apache.org/redelivery-policy.html
推荐阅读
- Crack|vectordraw图形库,提高了 WebGL 3D 渲染模式的性能
- 面试|你跳槽一次能涨多少(今天见识到跳槽天花板)
- Apache Ambari 项目或将被“雪藏”(只因没人愿意参与开发 | 提议已获“全票通过”)
- Apache Pulsar 社区年度盛会——Pulsar Summit Asia 重磅来袭!
- Apache|App-Launcher-Cordova-Plugin运行已经安装过的App整理
- SEO|apache服务器日志各项详细说明
- Apache
- php|利用nginx+apache+mysql+php+memcached+squid搭建门户网站
- Apache|关于apache工具类ArrayUtils的简单应用
- Apache|Apache.commons.BeanUtils常用使用方法