RabbitMQ的死信队列

一:介绍

死信,顾名思义就是无法被消费的消息;一般情况下,生产者把消息发送到队列中,消费者从队列中消费消息,但是有的时候因为某种原因队列中的消息无法被正常消费,这样的消息就变成了死信消息;当消息在队列中变成死信后,会被发送到和该队列关联的死信交换器上,最终被存储在与死信交换器关联的死信队列中。

二:消息变成死信的几种情况

1:设置了消息的过期时间,该消息在队列中达到过期时间后仍未被消费,即过期,则该消息变成了死信;

2:消息被消费者消费后,队列需要等待消费者给与回应,然后才能对队列中的消息做出相应的处理;如果消费者拒绝消息,且requeue参数设置为false,即不重新入队,则该消息变为了死信;

3:设置了某个队列的最大可承载消息的数量,当队列中现有消息数量超出设置的最大承载数量后将会被路由到死信队列中;设置消息队列的最大数量也是实际生产中作为队列限流的一种常规手段,具有实际的业务意义。

三:示意图

四:死信队列存在的意义

可以通过应用程序分析死信队列中的消息来分析当时出现的异常情况,进而改善和优化系统。

原文地址:https://www.cnblogs.com/hzcya1995/p/13302421.html