RabbitMQ學習系列(一) 介紹

2021-09-13 20:36:02 字數 1458 閱讀 5874

1.介紹

rabbitmq是乙個由erlang開發的基於amqp(advanced message queue )協議的開源實現。用於在分布式系統中儲存**訊息,在易用性、擴充套件性、高可用性等方面都非常的優秀。是當前最主流的訊息中介軟體之一。

rabbitmq的官網:

2. amqp

amqp,是應用層協議的乙個開放標準,為面向訊息的中介軟體設計。訊息中介軟體主要用於元件之間的解耦,訊息的傳送者無需知道訊息使用者的存在,同樣,訊息使用者也不用知道傳送者的存在。amqp的主要特徵是面向訊息、佇列、路由(包括點對點和發布/訂閱)、可靠性、安全。

3.系統架構

訊息佇列的使用過程大概如下:

(1)客戶端連線到訊息佇列伺服器,開啟乙個channel。

(2)客戶端宣告乙個exchange,並設定相關屬性。

(3)客戶端宣告乙個queue,並設定相關屬性。

(4)客戶端使用routing key,在exchange和queue之間建立好繫結關係。

(5) 客戶端投遞訊息到exchange。exchange接收到訊息後,就根據訊息的key和已經設定的binding,進行訊息路由,將訊息投遞到乙個或多個佇列裡。

如下圖所示:amqp 裡主要要說兩個元件:exchange 和 queue

綠色的 x 就是 exchange ,紅色的是 queue ,這兩者都在 server 端,又稱作 broker ,

這部分是 rabbitmq 實現的,而藍色的則是客戶端,通常有 producer 和 consumer 兩種型別。

4.幾個概念

p: 為producer,資料的傳送方。

c:為consumer,資料的接收方。

exchange:訊息交換機,它指定訊息按什麼規則,路由到哪個佇列。

queue:訊息佇列載體,每個訊息都會被投入到乙個或多個佇列。

binding:繫結,它的作用就是把exchange和queue按照路由規則繫結起來。

routing key:路由關鍵字,exchange根據這個關鍵字進行訊息投遞。

vhost:虛擬主機,乙個broker裡可以開設多個vhost,用作不同使用者的許可權分離。

channel:訊息通道,在客戶端的每個連線裡,可建立多個channel,每個channel代表乙個會話任務。

ps: rabbitmq 的一些基本的概念,就介紹完了,雖然都是些概念,但是了解他的一些原理,還是很重要的,特別是exchange 和 路由的概念和作用。接下來會具體介紹他的安裝和使用。

檢視rabbitmq 系列其他文章,

RabbitMQ學習系列(一) 介紹

1.介紹 rabbitmq是乙個由erlang開發的基於amqp advanced message queue 協議的開源實現。用於在分布式系統中儲存 訊息,在易用性 擴充套件性 高可用性等方面都非常的優秀。是當前最主流的訊息中介軟體之一。rabbitmq的官網 2.amqp amqp,是應用層協議...

Linq系列學習(一)介紹

一 linq簡介 linq是.net framework 3.5的新特性,其全稱是 language integrated query 語言整合查詢 是指將 查詢功能和語言 結合起來。從而為我們提供一種統一的方式,讓我們能在c 或vb.net語言中直接查詢和操作各種資料 二 linq作用 1 在.n...

Spring Batch學習(一)介紹

我們不會總是想要立即得到需要的資訊,批處理允許我們在請求處理之前就乙個既定的流程開始蒐集資訊 比如說乙個銀行對賬單,我們可以按月生成,並在使用者查詢之前開啟乙個批處理流程進行處理 更好的利用資源 讓應該利用的處理能力閒置起來是乙個大的浪費,我們可以定製處理讓乙個機器乙個接乙個的執行job可以更好的利...