死信队列的介绍及常见问题
本文主要介绍一下死信队列:
1.什么是死信队列:
死信是消息队列中的一种特殊消息,它指的是那些无法被正常消费或处理的消息,而死信队列就是用来存储死信的.
2.死信来源:
①:消息过期:消息在队列中存活时间超过了设定的TTL(过期时间)
②:消息被拒绝:被消费者主动拒绝,并且指定不重新入队
代码:
channel.basicNack(deliveryTag,false,false); | | multiple requeue③:队列满了
个人对死信队列的理解:对于RabbitMQ来说,死信队列是一个非常有用的特殊队列,它可以处理异常情况下,消息不能够被消费者正确消费而被放进死信队列的情况,应用程序可以通过消费这个死信队列中的内容去进一步地分析当时遇到的异常情况,进而可以改善和优化系统.
3.死信队列的应用场景:
①:用户支付订单后,支付系统会给订单系统返回当前订单的支付状态
---->为保证支付信息不丢失,需要用到死信队列.当消息消费异常时,将消息投入死信队列中,由订单系统的其他消费者来监听这个死信队列,并对数据进行处理
②:消息重试---将死信队列重新发送到原队列或另一个队列进行重试处理
③:消息丢弃---直接丢弃这些无法处理的消息,以避免它们占用资源
