1. 死信隊(duì)列
1.1 什么是死信隊(duì)列展运?
死信(“Dead Letter”)活逆,是RabbitMQ中的一種消息機(jī)制,當(dāng)你在消費(fèi)消息時(shí)拗胜,死信主要是以下幾種原因產(chǎn)生:
- 消息被消費(fèi)者否定確認(rèn)蔗候,使用channel.basicNack或channel.basicReject,并且 requeue 屬性被設(shè)置未false
- TTL過期的消息
- 隊(duì)列消息數(shù)量超過最大隊(duì)列長(zhǎng)度
1.2 原理圖:
1.3 實(shí)例:
倉庫地址:https://github.com/Tooi6/demo-springboot/tree/master/rabbitmq-deadletter
1.4 死信隊(duì)列參數(shù)
參數(shù) | 功能 |
---|---|
x-dead-letter-exchange | 聲明當(dāng)前隊(duì)列綁定的死信交換機(jī) |
x-dead-letter-routing-key | 聲明當(dāng)前隊(duì)列的死信路由key |
2. 延時(shí)隊(duì)列
2.1 什么是延時(shí)隊(duì)列
延時(shí)隊(duì)列就是用來存放需要在指定時(shí)間被處理的元素的隊(duì)列埂软。
2.2 RabbitMQ 如何實(shí)現(xiàn)延時(shí)隊(duì)列
RabbitMQ 本身是不支持延時(shí)隊(duì)列的琴庵,但我們可以利用TTL機(jī)制和死信隊(duì)列的來實(shí)現(xiàn)延時(shí)隊(duì)列的效果。
下面是延時(shí)隊(duì)列的架構(gòu)圖:
原理: 生成者產(chǎn)生一條延時(shí)消息(設(shè)置TTL時(shí)間)仰美,根據(jù)需要延時(shí)時(shí)間的不同迷殿,利用不同的routingkey將消息路由到不同的延時(shí)隊(duì)列,每個(gè)隊(duì)列都設(shè)置了不同的TTL屬性咖杂,并綁定在同一個(gè)死信交換機(jī)中庆寺,消息過期后,根據(jù)routingkey的不同诉字,又會(huì)被路由到不同的死信隊(duì)列中懦尝,消費(fèi)者只需要監(jiān)聽對(duì)應(yīng)的死信隊(duì)列進(jìn)行處理即可。
2.1 實(shí)例:
倉庫地址:https://github.com/Tooi6/demo-springboot/tree/master/rabbitmq-delayqueue