死信队列也是一个正常的队列,可以被消费。
但是,死信队列的消息来源于其他队列的转发。

RabbitMQ之死信队列

2:如何触发死信队列

  • 1:消息超时
  • 2:队列长度达到极限
  • 3:消息被拒绝消费,并不再重进队列,且reQueue = false

需要在消费者的 arguments 中配置死信队列,配置为:

"x-dead-letter-exchange":"自定义的交换机名称"

3:在Java中实例死信队列

3.1:生产者代码

RabbitMQ之死信队列

3.2:消费者代码

RabbitMQ之死信队列

4:测试效果

4.1:打开RabbimtMQ UI 页面,开启消费者

可以看到新创建了个交换机:
RabbitMQ之死信队列

点击交换机:
RabbitMQ之死信队列RabbitMQ之死信队列

每个交换机都有自己的队列。

4.2:关闭消费者,开启生产者,直到消息全部超时

在UI界面-队列界面
RabbitMQ之死信队列

等待十秒钟之后:
RabbitMQ之死信队列

可以看到消息全部从正常队列转发到死信队列中了。

4.3:此时开启消费者

RabbitMQ之死信队列

可以看到消费者接收到了死信队列的消息。

5:拓展

5.1:如何定义客户端连接名称

RabbitMQ之死信队列

5.2:如何限制消费者并发量

RabbitMQ之死信队列
从外部给定一个线程池,消费者执行任务从该线程池获取线程。

5.3:什么叫消费预取数?

RabbitMQ之死信队列
点击进入官方文档

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
  • 2021-09-18
  • 2021-09-29
  • 2021-07-10
猜你喜欢
  • 2021-12-08
  • 2022-12-23
相关资源
相似解决方案