【消息中间件篇04】RabbitMQ死信交换机

57 阅读1分钟

知识点

什么是死信交换机?

什么是延迟队列呢?进入队列的消息会被延迟消费的队列

场景:超时订单、限时优惠、定时发布

image.png

延迟队列 = 死信交换机+TTL

死信交换机

当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter):

  • 消费者使用basic.reject或basic.nack声明消费失败,并且消息的requeue参数设置为false
  • 消息是一个过期消息,超时无人消费
  • 要投递的队列消息堆积满了,最早的消息可能成为死信

如果该队列配置了dead-letter-exchange属性,指定了一个交换机,那么队列中的死信就会被投递到该交换机中,而这个交换机被称为死信交换机(Dead Letter ExChange,简称DLX)

image.png

image.png

TTL

TTL,也就是Time-To-Live。如果一个队列中的消息的TTL结束仍未消费,则会变成死信,ttl超时分为两种情况:

  • 消息所在的队列设置了存活时间
  • 消息本身设置了存活时间

image.png

image.png

延迟队列插件

DelayExchange插件,需要安装在RabbitMQ中

RabbitMQ官方插件社区:https://www/rabbitmq.com/community-plugins.html

image.png

插件使用: image.png

image.png