知识点
什么是死信交换机?
什么是延迟队列呢?进入队列的消息会被延迟消费的队列
场景:超时订单、限时优惠、定时发布
延迟队列 = 死信交换机+TTL
死信交换机
当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter):
- 消费者使用basic.reject或basic.nack声明消费失败,并且消息的requeue参数设置为false
- 消息是一个过期消息,超时无人消费
- 要投递的队列消息堆积满了,最早的消息可能成为死信
如果该队列配置了dead-letter-exchange属性,指定了一个交换机,那么队列中的死信就会被投递到该交换机中,而这个交换机被称为死信交换机(Dead Letter ExChange,简称DLX)
TTL
TTL,也就是Time-To-Live。如果一个队列中的消息的TTL结束仍未消费,则会变成死信,ttl超时分为两种情况:
- 消息所在的队列设置了存活时间
- 消息本身设置了存活时间
延迟队列插件
DelayExchange插件,需要安装在RabbitMQ中
RabbitMQ官方插件社区:https://www/rabbitmq.com/community-plugins.html
插件使用: