RabbitMQ中的队列类型包括: 1、普通队列:标准的消息队列。 2、优先级队列:支持消息优先级。 3、死信队列:存储无法处理的消息。 在 RabbitMQ (结合 Spring Boot) 中,队列的种类本质上是通过在
|
RabbitMQ中的队列类型包括: 1、普通队列: 标准的消息队列。 2、优先级队列: 支持消息优先级。 3、死信队列: 存储无法处理的消息。 在 RabbitMQ (结合 Spring Boot) 中,队列的“种类”本质上是通过在声明队列时传入不同的属性参数(Arguments)来实现的。 下面我将分别给出这三种队列的代码定义方式及核心原理解释。 1. 普通队列 (Standard Queue)定义:最基础的消息队列,遵循先进先出(FIFO)原则。 代码实现:直接使用 Queue 类的构造函数声明即可。
2. 优先级队列 (Priority Queue)定义:支持给消息打“星级”。 如果队列中有消息堆积,RabbitMQ 会优先将优先级高的消息推送给消费者,打破绝对的先进先出。 代码实现:需要在声明队列时配置 x-max-priority 属性,设定最大优先级数字。
????如何发送优先级消息?生产者在发送消息时,需要手动设置消息的 priority 属性:
注意:优先级队列只有在消费者消费速度跟不上生产者发送速度,导致消息在队列中堆积时,优先级排序才会生效。如果发一条就被消费一条,是没有意义的。 3. 死信队列 (Dead Letter Queue - DLQ)定义:死信队列本质上就是个普通队列。 只是它被绑定到了一个“死信交换机 (DLX)”上。当某个正常业务队列里的消息变成了“死信”时,RabbitMQ 会自动把这些消息丢进死信交换机,最终流向死信队列,用来做异常排查或补偿机制。 成为死信的三个条件:
代码实现:需要声明三个部分(业务队列、死信交换机、死信队列)。
总结对比
|
2021-06-05
2021-05-27
2021-05-26
2021-06-05
2021-05-16