1:何为死信队列
死信队列也是一个正常的队列,可以被消费。
但是,死信队列的消息来源于其他队列的转发。
2:如何触发死信队列
- 1:消息超时
- 2:队列长度达到极限
- 3:消息被拒绝消费,并不再重进队列,且reQueue = false
需要在消费者的 arguments 中配置死信队列,配置为:
"x-dead-letter-exchange":"自定义的交换机名称"
3:在Java中实例死信队列
3.1:生产者代码
3.2:消费者代码
4:测试效果
4.1:打开RabbimtMQ UI 页面,开启消费者
可以看到新创建了个交换机:
点击交换机:
每个交换机都有自己的队列。
4.2:关闭消费者,开启生产者,直到消息全部超时
在UI界面-队列界面
等待十秒钟之后:
可以看到消息全部从正常队列转发到死信队列中了。
4.3:此时开启消费者
可以看到消费者接收到了死信队列的消息。
5:拓展
5.1:如何定义客户端连接名称
5.2:如何限制消费者并发量
从外部给定一个线程池,消费者执行任务从该线程池获取线程。