RabbitMQ工作模型(一)

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.工作流程

  1. 生產者通過消息通道(channel)與RabbitMQ建立連
  2. 消息傳送到Exchange,並且消息上有對應的標誌關鍵字(RoutingKey)
  3. Exchange接收到消息後,就根據消息的RoutingKey和已經設置的binding,進行消息路由(投遞),將消息投遞到一個或多個隊列(Queue)裏
  4. 消費者(Consumer)客戶端從對應的隊列中獲取並處理消息

4.Exchange類型 

  • Direct 

     全匹配式傳遞。當RoutingKey和消息標誌完全一樣纔會存放到對應的隊列

  • Topic 

  廣播式全部傳遞。息都會被投遞到所有與此Exchange綁定的queue中

  • Fanout 

     匹配式傳遞。

   # 表示0個或多個單詞

  *表示1個

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章