原文网址:RabbitMQ--死信队列--使用/原理_IT利刃出鞘的博客-CSDN博客
简介
本文介绍RabbitMQ的死信队列。
本内容也是Java后端面试中常见的问题。
概述
DLX,全称为Dead-Letter-Exchange,可以称之为死信交换器,也有人称之为死信邮箱。当消息在一个队列中变成死信(dead message)之后,它能被重新被发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。
以下几种情况会导致消息变成死信:
- 消息被拒绝(Basic.Reject/Basic.Nack),并且设置requeue参数为false;
- 消息过期;
- 队列达到最大长度。
DLX是一个正常的交换器,和一般的交换器没有区别,它能在任何的队列上被指定,实际上就是设置某个队列的属性。当这个队列中存在死信时,RabbitMQ就会自动地将这个消息重新发布到设置的DLX上去,进而被路由到另一个队列,即死信队列。可以监听这个队列中的消息以进行相应的处理,这个特性与将消息的TTL设置为0配合使用可以弥补immediate参数的功能。
上边只是部分内容,为便于维护,本文已迁移到此地址:RabbitMQ死信队列-使用/原理 - 自学精灵