1. 程式人生 > >rabbitmq的總結

rabbitmq的總結

rabbitmq的術語

元件

Server(broker):接收客戶端連線,實現AMQP訊息佇列的路由功能的程序.簡單來說就是訊息佇列伺服器實體。

Vhost:虛擬主機,一個broker裡可以開設多個vhost,用作不同使用者的許可權分離。許可權控制組,使用者只能關聯到一個vhost上,一個vhost中可以有若干個Exchange和Queue,預設的vhost是"/"

Exchange:接收生產者傳送的訊息,並根據Binding規則將訊息路由給伺服器中的佇列 Exchange Type決定了Exchange路由訊息額行為,例如,在RabbitMQ中,ExchangeType有Direct、Fanout和Topic三種,不同型別的Exchange路由得到行為是不一樣的

queue:用於儲存還未消費的訊息。訊息佇列載體,每個訊息都會被投入到一個或多個佇列

 

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

 

Message:由Header和Body組成,Header是由生產者新增到各種屬性的集合,包括Message是否被持久化,是由哪個Message Queue接收優先順序是多少等,而Body是真正需要傳輸的APP資料

操作

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

key標記

BindingKey: 在mq中設定的繫結key

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

角色

producer:訊息生產者,就是投遞訊息的程式。

consumer:訊息消費者,就是接受訊息的程式。

 

rabbitmq的使用過程

客戶端宣告一個exchange,並設定相關屬性。
客戶端宣告一個queue,並設定相關屬性。
客戶端使用routing key,在exchange和queue之間建立好繫結關係。
消費者使用routing key,在exchange和queue之間建立好繫結關係。
生產者連線到訊息佇列伺服器,開啟一個channel。
生產者投遞訊息到exchange,exchange接收到訊息後,就根據訊息的key和已經設定的binding,進行訊息路由,將訊息投遞到一個或多個佇列裡。
消費者

根據queue接受訊息

 

exchange型別

direct 只有兩個routingkey完全相同,exchange才會選擇對應的binging進行訊息路由

topic routingkey可以有萬用字元:'*','#'.其中'*'表示匹配一個單詞, '#'則表示匹配沒有或者多個單詞

fanout 直接將訊息路由到所有繫結的佇列中,無須對訊息的routingkey進行匹配操作

header 路由的規則是根據header來判斷