RabbitMQ中的基本概念 原

Channel信道

在《RabbitMQ實戰》中是這麼說的,你要跟服務進行網絡通信,要打開一條TCP連接,但是,如果跟消息隊列之間每次發送、接收消息,都通過打開、關閉TCP連接來實現的話,要是每秒成百上千條那就太浪費資源了(而且操作系統也只能建立這個數量的連接,數據量更大了怎麼辦呢),所以他們構建了一種虛擬的連接--信道。信道是基於TCP連接的,每個信道有獨立的ID,簡單理解來說就是,TCP連接好比光纜,而信道就是無數的通信連接,這樣一個TCP連接就夠了,而且信道可以無上限使用。

Queue隊列

隊列就好比是RabbitMQ服務器中有一個個的小盒子,生產者發送的信息存放在這些小盒子中,消費者接收的消息也需要從這些小盒子中取

Routing Key路由鍵

當你指明瞭消息要放到哪個隊列時,就好比在每個消息上都要貼個標籤,這個標籤是用來標識這個消息要放到什麼樣的盒子中,這就是路由鍵

Binding綁定

綁定是在隊列和交換器間設定的一個關聯,類似於添加了一個路由規則,交換器在分發時會參考該規則進行分發

Exchange交換器

生產者生產了消息,要放到相應的盒子中,不可能讓生產者自己一個個去放,RabbitMQ提供了交換器,專門負責分發信息的模塊,不同的交換器分發的方式不一樣

  • direct:默認的交換器,隊列名即爲路由鍵,分發規則爲路由鍵匹配了就直接放入隊列,比如現有個消息要指明瞭放到香蕉隊列,那它的路由鍵即是香蕉,好比標籤上寫了香蕉,就會直接放到香蕉盒裏;指明瞭草莓,就放到草莓盒裏
  • fanout:具有類似廣播功能的交換器,該交換器可以對多個隊列進行綁定,在收到消息時,可以將同一個消息廣播到這些綁定的隊列中(路由鍵在該類型交換器上不起作用),然後你就可以根據需求在一個操作上對應去做多個不同的邏輯,而且還很方便的還可以進行擴展(在交換器上新增隊列綁定即可)
  • topic:topic交換器可以按照綁定規則讓來自不同源頭的消息到達相應的隊列。使用方式來說就是,假設現在有三個隊列,分別Q1、Q2和Q3,在綁定到該交換器時設定的綁定規則分別是“*a.log”、"a.*"和"#",那麼現在你發了三條消息M1(路由鍵是a.log)、M2(路由鍵是a.error)和M3(路由鍵幾個號b.log)給topic交換器,那它們分發的結果就是Q1中有M1,Q2中有M1M2,Q3中有M1M2M3,原因就是topic交換器會按照隊列的綁定規則對路由鍵進行匹配,*會進行特定位置的任意字符匹配,#則代表全字符匹配
  • headers:headers交換器不太常用,與direct只有一點不一樣,就是headers分發時不是匹配路由鍵,而是對消息的頭信息進行匹配,而且性能還會差很多

Vhost虛擬主機

說虛擬主機,大家可能都能想到電腦上的虛擬機,Vhost與虛擬機的作用是很類似的,在RabbitMQ中,所有的交換器、綁定、隊列都是在Vhost中運行的,默認就會有個“/”的虛擬主機,如果一個不夠使用的話,你也可以添加更多的虛擬主機,然後在其中添加隊列、綁定並使用,虛擬主機也可以靈活的按需開啓或者關閉。要注意的是,虛擬主機之間是不互通的,不能把A中的綁定規則用在B中,而且每個虛擬主機都有自己的權限設置,可以設定用戶的權限

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