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

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

生活随笔

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

编程问答

rabbitmq 传递文件_使用RabbitMQ进行消息传递

發(fā)布時(shí)間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rabbitmq 传递文件_使用RabbitMQ进行消息传递 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

rabbitmq 傳遞文件

RabbitMQ是一個(gè)強(qiáng)大的消息代理,可用于實(shí)現(xiàn)不同的消息傳遞模式。 即使有出色的教程 (使用不同的語(yǔ)言和框架),也很難理解這些概念。 在這篇文章中,我想展示一些可以用RabbitMQ實(shí)現(xiàn)的不同范例,以及為什么要為某些概念而苦惱。

使用隊(duì)列發(fā)送和接收

最簡(jiǎn)單的方法是使用隊(duì)列發(fā)送消息,并讓使用者從同一隊(duì)列中讀取數(shù)據(jù)。

沒(méi)有什么可以阻止您擁有多個(gè)使用者,每個(gè)使用者都可以處理隊(duì)列中的消息。 使用完一條消息后,該消息將從隊(duì)列中消失。

當(dāng)具有需要執(zhí)行的任務(wù)并且無(wú)論哪個(gè)消費(fèi)者處理任務(wù)都無(wú)關(guān)緊要時(shí),這特別適合。

發(fā)布/訂閱

并非所有用例都只消耗一條消息的方式。 通常,您希望擁有多個(gè)應(yīng)該全部處理所有消息的使用者。 一個(gè)示例可以是將對(duì)象存儲(chǔ)在不同的數(shù)據(jù)存儲(chǔ)中(例如,搜索索引和數(shù)據(jù)庫(kù)),另一種是域事件,例如已提交并應(yīng)由訂單管理系統(tǒng)和庫(kù)存系統(tǒng)處理的訂單。 這需要一種發(fā)布/訂閱機(jī)制,RabbitMQ當(dāng)然已經(jīng)涵蓋了這一點(diǎn)。

與僅使用隊(duì)列相比,最大的區(qū)別是在這種情況下,生產(chǎn)者不再直接寫隊(duì)列。 一個(gè)稱為Exchange的實(shí)例將接受郵件并將其轉(zhuǎn)發(fā)到一個(gè)或多個(gè)隊(duì)列。

要使用經(jīng)典的發(fā)布/訂閱模型,您可以使用FanoutExchange將消息轉(zhuǎn)發(fā)到一個(gè)或多個(gè)隊(duì)列。 要連接交換和隊(duì)列,您需要聲明一個(gè)綁定,在這種情況下,特定交換的所有消息都應(yīng)轉(zhuǎn)發(fā)到特定隊(duì)列。

每個(gè)使用者都從專用隊(duì)列中讀取消息。 這也意味著您將需要為每個(gè)正在監(jiān)聽(tīng)的使用者綁定一個(gè)綁定。

使用RabbitMQ,可以使用在使用者停止監(jiān)聽(tīng)時(shí)自動(dòng)刪除的隊(duì)列。 這允許消費(fèi)者加入和離開(kāi)時(shí)具有非常動(dòng)態(tài)的行為。

看我們的第一個(gè)示例,您可能想知道為什么有不同的方式來(lái)發(fā)送消息,發(fā)送隊(duì)列和進(jìn)行交換。 事實(shí)證明,發(fā)送到隊(duì)列確實(shí)是不可能的。 總是存在一個(gè)默認(rèn)交換,它僅轉(zhuǎn)發(fā)消息。 此默認(rèn)交換僅獲取消息的某個(gè)路由鍵(即隊(duì)列名稱),然后將它們以相同的名稱放入隊(duì)列中。

發(fā)布/訂閱過(guò)濾

除了將消息發(fā)送到已注冊(cè)進(jìn)行交換的所有隊(duì)列之外,還可以根據(jù)路由密鑰對(duì)消息進(jìn)行過(guò)濾。 所有消息都被發(fā)送到一個(gè)交換機(jī),該交換機(jī)通過(guò)查看路由鍵來(lái)決定將消息發(fā)送到哪個(gè)隊(duì)列。

如果您想與路由鍵完全匹配,請(qǐng)執(zhí)行DirectExchange。

將DirectExchange綁定到隊(duì)列時(shí),您需要提供一個(gè)路由密鑰,該路由密鑰將確定將為此隊(duì)列考慮的路由密鑰。 如果要分配多個(gè)路由鍵,則可以為同一隊(duì)列添加多個(gè)綁定。

您還可以提供通配符來(lái)確定應(yīng)將哪些路由密鑰用于隊(duì)列,這可以通過(guò)使用需要分層路由密鑰的TopicExchange來(lái)完成。

一開(kāi)始,這兩個(gè)交流-直接交流和主題交流-可能最讓我感到困惑。 當(dāng)涉及到主題時(shí),我正在考慮經(jīng)典的發(fā)布訂閱系統(tǒng),例如使用FanoutExchange時(shí)。 交換名稱是客戶端正在注冊(cè)的主題。 但是這里的主題是指在現(xiàn)有交換機(jī)上的一種路由。 與DirectExchange相同:我希望直接交換類似于第一個(gè)直接將消息發(fā)送到隊(duì)列的示例。 但是在這種情況下,直接交換是指直接路由,因此您始終需要為此提供路由密鑰。

如果您想進(jìn)一步了解各種交流,請(qǐng)轉(zhuǎn)到RabbitMQ網(wǎng)站上的教程 。

翻譯自: https://www.javacodegeeks.com/2018/03/messaging-with-rabbitmq-2.html

rabbitmq 傳遞文件

總結(jié)

以上是生活随笔為你收集整理的rabbitmq 传递文件_使用RabbitMQ进行消息传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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