RocketMQ 死信队列机制深度解析
RocketMQ 死信队列
什么是死信队列
当一条消息消费失败,RocketMQ就会自动进行消息重试。而如果消息超过最大重试次数,RocketMQ就会认为这个消息有问题。但是此时,RocketMQ不会立刻将这个有问题的消息丢弃,而会将其发送到这个消费者组对应的一种特殊队列:死信队列。
死信队列的特征
1. 队列归属
一个死信队列对应一个ConsumGroup,而不是对应某个消费者实例。如果一个ConsumeGroup没有产生死信消息,RocketMQ就不会为其创建相应的死信队列。
2. 消费行为
死信队列中的消息不会再被消费者正常消费。
3. 有效期
死信队列的有效期跟正常消息相同。默认3天,对应broker.conf中的fileReservedTime属性。超过这个最长时间的消息都会被删除,而不管消息是否消费过。
死信消息的处理
通常,一条消息进入了死信队列,意味着消息在消费处理的过程中出现了比较严重的错误,并且无法自行恢复。此时,一般需要人工去查看死信队列中的消息,对错误原因进行排查。然后对死信消息进行处理,比如转发到正常的Topic重新进行消费,或者丢弃。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zoloy's blog!
评论