什么是死信队列?
- 死信队列:DLX,dead-letter-exchange,可以成为死信交换器,也有人称为死信邮箱。
- 利用DLX,当消息在一个队列中变成死信 (dead message) 之后,它能被重新publish到另一个Exchange,这个Exchange就是DLX
什么情况下消息会成为死信?
- 消息被拒绝(basic.reject / basic.nack),并且requeue = false
- 消息TTL过期
- 队列达到最大长度
死信的产生在业务中其实是一件很平常的事情,以上几个就是常见的死信产生原因。但是我们介绍死信队列提到,死信交换器,其实他也是一个普通的交换器,我们也可以使用死信交换器来定义一些死信,但是并不常见这种应用。
死信队列的应用场景
一般用在较为重要的业务队列中,确保未被正确消费的消息不被丢弃,一般发生消费异常可能原因主要有由于消息信息本身存在错误导致处理异常,处理过程中参数校验异常,或者因网络波动导致的查询异常等等,当发生异常时,当然不能每次通过日志来获取原消息,然后让运维帮忙重新投递消息。
死信队列的消息应该怎么处理
- 1、丢弃,如果不是很重要,可以选择丢弃
- 2、通过配置死信队列,可以让未正确处理的消息暂存到另一个队列中,待后续排查清楚问题再来处理这些信息
- 3、手工编写一个警告,消费死信队列,直接入库