前言
RabbitMQ 有个队列叫死信队列,死信队列可以做蛮多事的,比如可以让消息半个小时后消费,规定每天几点钟消费消息等等。但其实死信队列与其他普通队列几乎是一样的。只不过消息在普通队列死亡后,普通队列根据自身设置的x-dead-letter-exchange
,以及x-dead-letter-routing-key
将消息推送到死信队列。如下图。
![](https://img.haomeiwen.com/i12208532/f632ece58905180c.png)
接下来实力操作一波,先定个小目标:普通队列的数据在过期后会自动往死信队列中推送。
实践
新建交换机
![](https://img.haomeiwen.com/i12208532/db9b136de5cb31cc.png)
新建普通队列
- 新建
normal.queue
队列。 - 设置
normal.queue
指向死信队列的x-dead-letter-exchange
,x-dead-letter-routing-key
。 -
设置消息过期时间。
新建普通队列
新建死信队列
![](https://img.haomeiwen.com/i12208532/9f8f2c2dfef8b4a0.png)
由于上述的普通队列指定消息死亡后将会推送的交换机为dead-exchange
,路由键为dead.routingkey
,因此死信队列需要绑定dead-exchange
以及dead.routingKey
。
![](https://img.haomeiwen.com/i12208532/5e6e8d0292b5a5b0.png)
准备数据
现在往normal.queue
队列中发送六个数据。截图如下。
![](https://img.haomeiwen.com/i12208532/1c578321372a19f9.png)
查看数据结果
由于normal.queue
队列设置消息过期为10000毫秒
,因此过了10000毫秒
后消息自动过期,并且死信队列增加六条消息。如下截图。
![](https://img.haomeiwen.com/i12208532/243002f15cb5834e.png)
消息到达死信队列后可以到死信队列中查看消息死亡原因。如下图。
![](https://img.haomeiwen.com/i12208532/3c8613b764beece5.png)
总结
前言中展示的图就是最好的总结。这里再次贴出来。
![](https://img.haomeiwen.com/i12208532/f632ece58905180c.png)
网友评论