Bootstrap

RabbitMQ的延时队列和死信队列

前言:
1、在 RabbitMQ 中,没有严格意义上的死信队列,所谓死信队列和正常队列没有太大区别,都是需要创建自己的Exchange、Routingkey、Queue,只不过死信队列的 Exchange 和 RoutingKey 要作为参数绑定到正常队列(也可能是延时队列)上,根据参数策略决定是否进入死信队列

2、死信队列和延时队列可以相互调换使用,例如先发送消息给延时队列(其中配置的有延时策略),当消息达到延长的时间后,再丢入正常的业务队列中。此时就可以把正常的队列理解为死信队列,而前者可理解为延时队列

3、无法或暂时无法被消费、或消费出异常的消息,即被丢入死信队列

一、队列中的消息在以下情况,会进入死信队列

1、消息 TTL(time to live),(x-message-ttl)过期

2、队列达到最大长度(x-max-length),满了无法再存放消息

3、消息被拒绝(basic.reject / basic.nack),并且requeue = false

4、消费者开启了自动确认,然后消费消息时出现异常,超过了配置的重试次数

二、延时队列示例

1、定义延

;