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可以更好的利...