写在前面的文章
什么是死信队列
死信
是 RabbitMQ
中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:
- 消息被否定确认,使用
channel.basicNack
或channel.basicReject
,并且此时requeue
属性被设置为false
。 - 消息在队列的存活时间超过设置了
TTL
时间。 - 消息队列的消息数量已经超过最大队列长度。
那么该消息将成为 死信
,如果队列配置了死信队列,那么该消息将会被丢进死信队列,如果没有配置,该消息将会被丢弃。
应用场景
当一个队列中的消息必须要被正确消费,但是却无法被正确消费,有很多情况可能导致出现这个问题,可能是消息本身的数据导致业务无法通过校验,也可能是相关服务宕机导致,甚至可能只是网络波动导致。此时该消息不能确认