死信队列
DLX,全称为Dead-Letter-Exchange,死信交换机,死信邮箱。当消息在一个队列中变成死信之后,它能重新发送到另外一个交换器中,这个交换器就是DLX,绑定DLX的队列就称为死信队列。
导致死信的几种原因:
● 消息被拒(Basic.Reject/Basic.Nack)且requeue = false
● 消息TTL(消息的存活时间)过期
● 队列满了,无法再添加
RabbitMQ实现延迟队列
RabbitMQ本身没有延迟队列,要实现延迟消息,一般有两种方式:
- 通过RabbitMQ本身队列的特性来实现,使用死信交换机和消息的存活时间TTL
- RabbitMQ3,5,7版本及以上提供了一个插件来实现延迟队列功能。
AMQP协议以及RabbitMQ本身没有直接支持延迟队列的功能,但是可以通过TTL和DLX模拟出延迟队列的功能。