RabbitMQ-16-死信队列
死信队列
前面小节中,学习了如何设置消息过期,过期后消息就被丢弃了。 数据是很宝贵的,丢弃后,后续业务无法运行。
RabbitMQ解决方案:死信队列
死信队列:队列被配置DLX属性(Dead-Letter-Exchange)
一个消息如何变成死信?
消息被拒绝(reject或者nack),并且requeue=false,如果设置requeue=true, 就会重新回到队列,那么下次还是消费这个消息,还是消费失败,这样反复,对系统压力也大, 那我们消息被拒绝并且设置了requeue=false,就会进入死信队列。
消息过期TTL
队列达到最大长度(队列的max-length,如果大于这个值,那么就会被发送到死信队列里)
如何设置死信队列?
Exchange:dlx.exchange
Queue:dlx.queue
RoutingKey:#
在需要设置死信的队列加入参数
x-dead-letter-exchange=dlx.exchange
死信队列解决什么问题
消息设置过期时间,过期后直接丢弃,系统也不知道消息被丢弃了(很容易出大事儿,这个锅谁来背)。只能将过期消息转移,并收集起来。 所以就有了死信队列。
死信队列: Dead-Letter-Exchange
一个消息变成死信(也就是消息过期了)后,可以被重新发布到另一个Exchange,这个Exchange是一个普通交换机。 死信被死信交换机路由后,进入一个固定的队列里。
哪些消息会变成死信
- 消息被拒绝
- 消息过期
- 队列达到最大长度
RabbitMQ该如何学习
计算机学科是一个要求动手能力很强的学科,通过实战,用实际项目,把知识牢牢掌握住。


添加微信 | 公众号更多内容 |
---|---|
![]() |
![]() |
本博客所发布的内容,部分内容来源于网络,版权归原作者所有,如有侵权,请联系删除。转载请注明来自 面向加薪学习!