rabbitmq是一套基於amqp協議使用erlang語言開發的訊息佇列。
下面首先來介紹一下amqp協議
以上這段文字**於維基百科。要注意其中的兩點乙個是與jms的不同。 還有一點就是訊息是作為位元組流進行傳遞,而這個協議是規定了位元組流內容的格式。
這個圖是關於amqp協議的, 乙個服務端,裡面是有多virtuual host可以理解為資料庫。exchange 就是乙個交換機(路由。相當於現實生活中的看門人,根據規則將訊息放到乙個queue中) queue 佇列 就是我們最終放資料的地方了。
amqp的相關概念
server: 又稱為broker,接收服務端連線。
connection: 建立連線,應用程式與broker的網路連線。
channel: 網路通道,幾乎所有的操作都要在channel。channel是進行訊息讀寫的通道。客戶端可建立多個channel,就有點類似於資料庫的session一樣。在使用資料庫的時候也是先建立連線,在通過連線去建立session。channel就是乙個會話。
message: 訊息,伺服器和應用程式之間傳送的資料,由properties和body組成。properties可以對訊息進行修飾,比如訊息的優先順序、延遲等高階特性;body則就是訊息體的內容。
virtual host: 虛擬位址,用於進行邏輯隔離,最上層的訊息路由。乙個virtual host是裡面可以有多個exchange和queue。同乙個virtual host裡面不能有相同名稱的exchange或者 queue。
exchange:交換機,接收訊息,根據路由鍵**訊息到繫結的佇列。
binding:exchange和queue進行繫結。繫結其中就是建立乙個路由規則。
routing key:乙個路由規則,交換機就是根據這個路由規則來確定將訊息放置到哪個乙個queue中。
queue: 訊息佇列,儲存訊息並且可以將訊息**。
下面是乙個流程圖
根據這個圖我們可以知道,乙個virtual host 會有多個交換機,而同乙個交換機可以和多個queue繫結,同乙個訊息可以同時傳送到乙個佇列或者 多個佇列中。最後在由佇列將訊息**到消費者。
可以根據下面這個圖來理解
對比文章
以上是關於amqp協議相關概念的介紹。
熟悉RabbitMQ與AMQP協議
1.訊息佇列的簡介 rabbitmq採用erlang語言開發。erlang語言由ericson設計,專門為開發concurrent和distribution系統的一種語言,在電信領域使用廣泛。otp open telecom platform 作為erlang語言的一部分,包含了很多基於erlang...
RabbitMQ與AMQP協議詳解
生產者傳送訊息到broker server rabbitmq 在broker內部,使用者建立exchange queue,通過binding規則將兩者聯絡在一起。exchange分發訊息,根據型別 binding的不同分發策略有區別。訊息最後來到queue中,等待消費者取走 exchange有多種型...
php 的rabbitmq 擴充套件模組amqp安裝
使用php開發,要使用中間佇列rabbitmq,必須要安裝php的擴充套件模組amqp,伺服器的環境是php7.1.18 centos 6.8,nginx 1.8 使用php的pecl命令 usr local php bin pecl install amqp 安裝amqp 一直報如下錯 check...