LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

RabbitMQ最全詳解(圖文全面總結(jié))

admin
2025年6月28日 21:54 本文熱度 241

消息中間件是高并發(fā)架構(gòu)的基石,之前談過(guò)了RocketMQ和Kafka,今天接著詳解RabbitMQ消息中間件@mikechen

RabbitMQ

RabbitMQ是一款使用Erlang語(yǔ)言開(kāi)發(fā)的,實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)的開(kāi)源消息中間件。

AMQP,即Advanced Message Queuing Protocol,高級(jí)消息隊(duì)列協(xié)議是應(yīng)用層協(xié)議的一個(gè)開(kāi)放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計(jì)。

Erlang語(yǔ)言,主要用于并發(fā)及分布式系統(tǒng)的開(kāi)發(fā),在電信領(lǐng)域應(yīng)用廣泛,OTP作為Erlang語(yǔ)言的一部分,包含了很多基于Erlang開(kāi)發(fā)的中間件及工具庫(kù)。 

RabbitMQ特點(diǎn)

1.可靠性:RabbitMQ使用一些機(jī)制來(lái)保證可靠性, 如持久化、傳輸確認(rèn)及發(fā)布確認(rèn)等。

2.靈活的路由 :在消息進(jìn)入隊(duì)列之前,通過(guò)交換器來(lái)路由消息。

3.擴(kuò)展性:多個(gè)RabbitMQ節(jié)點(diǎn)可以組成一個(gè)集群,也可以根據(jù)實(shí)際業(yè)務(wù)情況動(dòng)態(tài)地?cái)U(kuò)展 集群中節(jié)點(diǎn)。

4.高可用性:隊(duì)列可以在集群中的機(jī)器上設(shè)置鏡像,使得在部分節(jié)點(diǎn)出現(xiàn)問(wèn)題的情況下隊(duì) 列仍然可用。

5.多種協(xié)議:RabbitMQ除了原生支持AMQP協(xié)議,還支持STOMP, MQTT等多種消息 中間件協(xié)議。

6.多語(yǔ)言客戶端:RabbitMQ 幾乎支持所有常用語(yǔ)言,比如 Java、 Python、 Ruby、 PHP、 C#、 JavaScript 等。 

RabbitMQ架構(gòu)設(shè)計(jì)

RabbitMQ架構(gòu),如下圖所示:

RabbitMQ架構(gòu)會(huì)涉及如下模型:Producer、Consumer、Queue、Exchange、Broker、RoutingKey、BindingKey。

 

RabbitMQ架構(gòu)模型

1.Producer

消息生產(chǎn)者Producer:主要就是生成消息,通過(guò)信道(Channel),把消息發(fā)送給交換機(jī)(Exchange)。

消息一般可以包含 2 個(gè)部分:

  1. 消息體(payload):一般是一個(gè)帶有業(yè)務(wù)邏輯結(jié)構(gòu)的數(shù)據(jù),比如:一個(gè) JSON 字符串;

  2. 標(biāo)簽(Label):用來(lái)表述這條消息,比如:一個(gè)交換器的名稱和一個(gè)路由鍵; 

2.Consumer

這個(gè)大家也比較清楚,就是消息消費(fèi)者,就是接受消息的程序。

消費(fèi)者監(jiān)聽(tīng)RabbitMQ中的(Queue)隊(duì)列中的消息,然后去消費(fèi)。

備注:消息(Message)會(huì)一直留在隊(duì)列里,直到被消費(fèi)者(Consumer)消費(fèi)。 

3.Queue

用于存儲(chǔ)消息,如下圖所示:

RabbitMQ 的生產(chǎn)者生產(chǎn)消息并最終投遞到隊(duì)列中,消費(fèi)者可以從隊(duì)列中獲取消息并消費(fèi)。

RabbitMQ中消息都只能存儲(chǔ)在隊(duì)列中,這一點(diǎn)和Kafka這種消息中間件相反。

多個(gè)消費(fèi)者可以訂閱同一個(gè)隊(duì)列,這時(shí)隊(duì)列中的消息會(huì)被平均分?jǐn)偨o多個(gè)消費(fèi)者進(jìn)行處理,如下圖所示:

 

4.Exchange

生產(chǎn)者將消息發(fā)送到Exchange,由交換器將消息路由到一個(gè)或者多個(gè)隊(duì)列中。

如下圖所示:

這里的交互機(jī)會(huì)涉及如下四種類型:

  1. 直接Direct;

  2. 扇出Fanout ;

  3. 主題Topic ;

  4. 消息頭Headers;

不同的類型有著不同的路由策略。

5.Broker

可以將一個(gè)RabbitMQ Broker看作一臺(tái)RabbitMQ服務(wù)器,如下圖所示:

上圖展示了消息從生產(chǎn)者存入RabbitMQ Broker,以及消費(fèi)者從Broker中消費(fèi)數(shù)據(jù)的完整過(guò)程。

6.Routing Key

生產(chǎn)者將消息發(fā)給交換器的時(shí)候,一般會(huì)指定一個(gè) RoutingKey,用來(lái)指定這個(gè)消息的路由規(guī)則。

如下圖所示:

生產(chǎn)者可以在發(fā)送消息給交換器時(shí),通過(guò)指定 RoutingKey 來(lái)決定消息流向哪里。

7.BindingKey

RabbitMQ 中通過(guò)綁定將交換器與隊(duì)列關(guān)聯(lián)起來(lái),在綁定的時(shí)候一般會(huì)指定一個(gè)綁定鍵(BindingKey),這樣 RabbitMQ 就知道如何正確地將消息路由到隊(duì)列了。


閱讀原文:原文鏈接


該文章在 2025/7/1 23:57:58 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
午夜福利国产精品视频 | 中文AV免费在线 | 一本在线视频在线观看 | 亚洲成a人片在线天堂 | 亚洲国产日韩在线人高清 | 日韩熟女一区精品视频 |