日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ 死信/死信队列

發(fā)布時(shí)間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ 死信/死信队列 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


一、RabbitMQ 死信/死信隊(duì)列

1、DLX

  • Dead Letter Exchange 的縮寫(xiě)

  • DLX(Dead Letter Exchanges)死信交換,死信隊(duì)列本身也是一個(gè)普通的消息隊(duì)列,在創(chuàng)建隊(duì)列的時(shí)候,通過(guò)設(shè)置一些關(guān)鍵參數(shù),可以將一個(gè)普通的消息隊(duì)列設(shè)置為死信隊(duì)列,與其它消息隊(duì)列不同的是,其入棧的消息根據(jù)入棧時(shí)指定的過(guò)期時(shí)間/被拒絕/超出隊(duì)列長(zhǎng)度被移除,依次被轉(zhuǎn)發(fā)到指定的消息隊(duì)列中進(jìn)行二次處理。這樣說(shuō)法比較拗口,其原理就是死信隊(duì)列內(nèi)位于頂部的消息過(guò)期時(shí),該消息將被馬上發(fā)送到另外一個(gè)訂閱者(消息隊(duì)列)中


  • 2、什么是死信

  • 消息被拒絕(basic.reject或basic.nack)并且requeue=false.

  • 消息TTL過(guò)期

  • 隊(duì)列達(dá)到最大長(zhǎng)度(隊(duì)列滿了,無(wú)法再添加數(shù)據(jù)到mq中)


3、什么是死信交換機(jī)

  • 在定義業(yè)務(wù)隊(duì)列的時(shí)候,要考慮指定一個(gè)死信交換機(jī),死信交換機(jī)可以和任何一個(gè)普通的隊(duì)列進(jìn)行綁定,然后在業(yè)務(wù)隊(duì)列出現(xiàn)死信的時(shí)候就會(huì)將數(shù)據(jù)發(fā)送到死信隊(duì)列。


4、什么是死信隊(duì)列

  • 死信隊(duì)列實(shí)際上就是一個(gè)普通的隊(duì)列,只是這個(gè)隊(duì)列跟死信交換機(jī)進(jìn)行了綁定,用來(lái)存放死信而已



如何使用死信交換機(jī)

定義業(yè)務(wù)(普通)隊(duì)列的時(shí)候指定參數(shù)

  • x-dead-letter-exchange: 用來(lái)設(shè)置死信后發(fā)送的交換機(jī)

  • x-dead-letter-routing-key:用來(lái)設(shè)置死信的routingKey

死信交換機(jī)圖解




生產(chǎn)者:

(1)生產(chǎn)者連接到RabbitMQ Broker,建立一個(gè)連接( Connection)開(kāi)啟一個(gè)信道(Channel)

(2)生產(chǎn)者聲明一個(gè)交換器,并設(shè)置相關(guān)屬性,比如交換機(jī)類型、是否持久化等

(3)生產(chǎn)者聲明一個(gè)隊(duì)列井設(shè)置相關(guān)屬性,比如是否排他、是否持久化、是否自動(dòng)刪除等

(4)生產(chǎn)者通過(guò)路由鍵將交換器和隊(duì)列綁定起來(lái)

(5)生產(chǎn)者發(fā)送消息至RabbitMQ Broker,其中包含路由鍵、交換器等信息。

(6)相應(yīng)的交換器根據(jù)接收到的路由鍵查找相匹配的隊(duì)列。

(7)如果找到,則將從生產(chǎn)者發(fā)送過(guò)來(lái)的消息存入相應(yīng)的隊(duì)列中。

(8)如果沒(méi)有找到,則根據(jù)生產(chǎn)者配置的屬性選擇丟棄還是回退給生產(chǎn)者

(9)關(guān)閉信道。

(10)關(guān)閉連接。


消費(fèi)者:

(1)消費(fèi)者連接到RabbitMQ Broker ,建立一個(gè)連接(Connection),開(kāi)啟一個(gè)信道(Channel) 。

(2)消費(fèi)者向RabbitMQ Broker 請(qǐng)求消費(fèi)相應(yīng)隊(duì)列中的消息,可能會(huì)設(shè)置相應(yīng)的回調(diào)函數(shù),

(3)等待RabbitMQ Broker 回應(yīng)并投遞相應(yīng)隊(duì)列中的消息,消費(fèi)者接收消息。

(4)消費(fèi)者確認(rèn)(ack) 接收到的消息。

(5)RabbitMQ 從隊(duì)列中刪除相應(yīng)己經(jīng)被確認(rèn)的消息。

(6)關(guān)閉信道。

(7)關(guān)閉連接。


總結(jié)

以上是生活随笔為你收集整理的RabbitMQ 死信/死信队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。