1.什麼是RabbitMQ
MQ是Message Queue,也就是消息隊列,是一個消息中間件,使用Erlang語言寫的。
2.工作模型
(1)Broker:中介。提供一種傳輸服務,維護一條從生產者到消費者的傳輸線路,保證消息數據能按照指定的方式傳輸。粗略的可以將圖中的RabbitMQ Server當作Broker。
(2)Exchange:消息交換機。指定消息按照什麼規則路由到哪個隊列Queue。生產者不能直接和Queue建立連接,而是通過交換機進行消息分發。
(3)Queue:消息隊列。消息的載體,每條消息都會被投送到一個或多個隊列中。
(4)Binding:綁定。作用就是將Exchange和Queue按照某種路由規則綁定起來。
(5)RoutingKey:路由關鍵字。消息所攜帶的標誌,Exchange根據RoutingKey進行消息投遞。
(6)Vhost:虛擬主機。一個Broker可以有多個虛擬主機,用作不同用戶的權限分離。一個虛擬主機持有一組Exchange、Queue和Binding。
(7)Producer:消息生產者。主要將消息投遞到對應的Exchange上面。一般是獨立的程序。
(8)Consumer:消息消費者。消息的接收者,一般是獨立的程序。
(9)Channel:消息通道,也稱信道,是連接消費者和Broker的虛擬連接,如果直接讓消費者和Broker建立TCP的連接,會讓Broker有性能損耗。在客戶端的每個連接裏可以建立多個Channel,每個Channel代表一個會話任務。
3.工作流程
- 生產者通過消息通道(channel)與RabbitMQ建立連
- 消息傳送到Exchange,並且消息上有對應的標誌關鍵字(RoutingKey)
- Exchange接收到消息後,就根據消息的RoutingKey和已經設置的binding,進行消息路由(投遞),將消息投遞到一個或多個隊列(Queue)裏
- 消費者(Consumer)客戶端從對應的隊列中獲取並處理消息
4.Exchange類型
- Direct
全匹配式傳遞。當RoutingKey和消息標誌完全一樣纔會存放到對應的隊列
- Topic
廣播式全部傳遞。息都會被投遞到所有與此Exchange綁定的queue中
- Fanout
匹配式傳遞。
# 表示0個或多個單詞
*表示1個