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,進行訊息路由,將訊息投遞到一個或多個佇列裡。
消費者
exchange型別
direct 只有兩個routingkey完全相同,exchange才會選擇對應的binging進行訊息路由
topic routingkey可以有萬用字元:'*','#'.其中'*'表示匹配一個單詞, '#'則表示匹配沒有或者多個單詞
fanout 直接將訊息路由到所有繫結的佇列中,無須對訊息的routingkey進行匹配操作
header 路由的規則是根據header來判斷