作者介紹:簡歷上沒有一個精通的運維工程師。請點擊上方的藍色《運維小路》關注我,下面的思維導圖也是預計更新的內容和當前進度(不定時更新)。
中間件,我給它的定義就是為了實現某系業務功能依賴的軟件,包括如下部分:
Web服務器
代理服務器
ZooKeeper
Kafka
RabbitMQ(本章節)
前面的內容,我們介紹了虛擬主機(vhost),但是它只是一個邏輯概念,它必須配合對應的交換機(Exchange),隊列(Queue),綁定(Binding)才能具體使用,今天我們首先來介紹的是交換機。
交換機(Exchange)
交換機是接收生產者發送消息的組件,它的主要功能是根據特定的規則將消息路由到一個或多個隊列中。可以簡單的理解消息首先會到交換機,然后才會分發出去,這個和傳統的物理交換機實際比較類似。
交換機類型
RabbitMQ 提供了四種主要的交換機類型,每種類型實現了不同的路由算法:
直連交換機(Direct Exchange):根據消息的路由鍵(routing key)將消息路由到與之綁定的隊列中,綁定鍵(binding key)和路由鍵精確匹配時消息才會被路由。這個也是日常使用最多的交換機類型。
扇形交換機(Fanout Exchange):將接收到的所有消息廣播到與之綁定的所有隊列中,忽略路由鍵。
主題交換機(Topic Exchange):通過消息的路由鍵和綁定鍵的模式匹配來決定消息的路由。綁定鍵可以使用*(匹配一個單詞)和#(匹配零個或多個單詞)通配符。
頭交換機(Headers Exchange):根據消息的頭部信息而非路由鍵來進行消息路由,綁定規則通過消息頭中的鍵值對來定義。
交換機屬性
名稱:交換機的唯一標識符,在 vhost 內必須唯一。
持久性(Durable):設置為 true 時,交換機會在 RabbitMQ 服務器重啟后仍然存在。
自動刪除(Auto-delete):當所有與之綁定的隊列都解除綁定時,交換機將被自動刪除。
內部(Internal):如果設置為 true,則該交換機不能直接接收生產者的消息,只能用于交換機之間的綁定。可以簡單理解它只接收其他交換機發過來的信息。
默認交換機介紹
每創建一個虛擬主機(vhost),都會默認創建下面的交換機。
1.所有交換機都基于虛擬主機(vhost),這里默認都是在根(/)下面。
2.系統預設了部分交換機,其中第一個是沒有指定交換機的的信息會被這個默認交換機收取。
3.就是前面指定的交換機類型。
4.“D”代表持久化(重啟了還在)“I” 代表不對外
創建交換機
這里實際上就是前面哪些參數,前面提到過交換機具有自動刪除就在這里配置,還有是否是內部交換機。Alternate exchange (備用交換機)我們后期講解死信隊列的時候來說。
創建交換機的時候,選擇的虛擬主機必須要有對應的賬號權限才可以,比如下圖這樣的權限,我如果給/test01 虛擬主機(vhost)創建交換機則會拒絕。
后面的操作,我們盡量使用頁面來完成。
下圖的ceph115就是交換機(Exchange),位于虛擬主機(vhost)/test 下,交換機類型是使用最多的直連交換機(Direct Exchange)。