目錄
一、基本概念
1.?生產者(Producer)
2.?消費者(Consumer)
3.?隊列(Queue)
4.?交換器(Exchange)
5.?綁定(Binding)
6.?路由鍵(Routing Key)
7.?消息確認(ACK)
8.?持久化(Durability)
9.?虛擬主機(Virtual Host)
二、認識MQ控制臺及基本操作
1、MQ系統預設的交換機:
2、創建交換機
3、創建隊列
4、將交換機與隊列綁定(路由)?編輯
5、發送消息
6、查看隊列中的消息?編輯
三、交換機類型
1、Fanout交換機
2、Direct交換機
3、Topic交換機
四、數據隔離
1、添加新用戶
2、查看用戶列表
3、切換到新用戶,并創建虛擬主機。
4、回交換機看看
? ? ? ? 大家好,今天給大家分享RabbitMQ。MQ呢可以看作一個中間者,我們給MQ發送一條消息,然后其他服務就可以從MQ獲取到消息并執行相應的業務。這樣的好處就是可以達到異步處理,生產消息的一方只需要把消息發送給MQ即可,無需再關注后續操作,可以繼續執行自己的業務。
一、基本概念
下面一些交換機的概念后面會講,比如路由鍵什么的如果第一次看不懂沒關系
1.?生產者(Producer)
-
發送消息的應用,將消息發布到 RabbitMQ 的?交換器。
2.?消費者(Consumer)
-
接收消息的應用,從?隊列?中訂閱并處理消息。
3.?隊列(Queue)
-
存儲消息的緩沖區,消息會被暫存在隊列中,直到被消費者處理。
-
特性:可聲明為持久化(重啟后保留)、獨占(僅限當前連接)或自動刪除(無消費者時刪除)。
4.?交換器(Exchange)
-
接收生產者發送的消息,并根據規則(綁定、路由鍵)將消息路由到隊列。
-
常用類型:
-
Direct:精確匹配路由鍵。
-
Fanout:廣播到所有綁定隊列。
-
Topic:基于通配符匹配路由鍵(如?
logs.*
)。 -
Headers:通過消息頭屬性匹配(不常用)。
-
5.?綁定(Binding)
-
連接交換器和隊列的規則,定義消息如何從交換器路由到隊列。
6.?路由鍵(Routing Key)
-
生產者發送消息時指定的鍵,交換器根據此鍵決定消息路由到哪些隊列。
7.?消息確認(ACK)
-
手動確認(Manual Acknowledgement):消費者處理完消息后需顯式發送 ACK,RabbitMQ 才會從隊列刪除消息。
-
自動確認(Auto ACK):消息發送后立即刪除,可能導致消息丟失(不推薦生產環境使用)。
8.?持久化(Durability)
-
隊列持久化:聲明隊列時設置?
durable=true
,重啟后隊列保留。 -
消息持久化:發送消息時設置?
delivery_mode=2
,確保消息寫入磁盤(需配合持久化隊列生效)。
9.?虛擬主機(Virtual Host)
-
邏輯隔離單元,類似獨立環境。不同虛擬主機的交換器、隊列等資源互相隔離。
二、認識MQ控制臺及基本操作
1、MQ系統預設的交換機:
2、創建交換機
3、創建隊列
4、將交換機與隊列綁定(路由)

完成:
5、發送消息
想交換機發送消息,交換機會根據它自己的類型,將消息路由發送到與他綁定的隊列中
6、查看隊列中的消息

三、交換機類型
1、Fanout交換機
-
作用:廣播消息,將消息無條件發送到所有綁定的隊列。
-
特點:
-
完全忽略路由鍵(Routing Key)。
-
每條消息會被復制到所有關聯隊列。
-
-
典型場景:
-
群發通知(如系統廣播)。
-
日志分發到多個消費者。
-
事件驅動架構中的多服務同步處理。
-
一句話:無腦廣播,一人發送,全員隊列接收。
2、Direct交換機
-
作用:精確匹配路由鍵,將消息發送到與路由鍵完全一致的綁定隊列。
-
特點:
-
消息的路由鍵(Routing Key)必須與隊列的綁定鍵(Binding Key)完全相同。
-
一對一或多對一投遞(如多個隊列綁定相同鍵時,消息會復制到這些隊列)。
-
-
典型場景:
-
任務分發(如按任務類型路由到特定隊列)。
-
訂單系統中按訂單狀態分類處理。
-
需要嚴格匹配規則的場景(如支付成功/失敗消息分離)。
-
一句話:按鍵精準投遞,一對一或多對一,嚴格匹配。
示例:在控制臺中創建交換機,并設置綁定關系
3、Topic交換機
-
作用:基于通配符模式匹配路由鍵,實現靈活的多條件路由。
-
特點:
-
路由鍵支持通配符:
-
*
:匹配一個單詞(如?order.*
?匹配?order.paid
,不匹配?order.paid.email
)。 -
#
:匹配零或多個單詞(如?order.#
?匹配?order
、order.paid
、order.paid.email
)。
-
-
綁定鍵格式為用
.
分隔的多級路徑(如?user.notification.email
)。
-
-
典型場景:
-
多維度事件分類(如日志分級?
error.*
、warning.*
)。 -
動態路由(如根據用戶行為類型+地區分發消息?
action.purchase.us
)。 -
訂單狀態多級處理(如?
order.*.failed
?匹配所有失敗類型)。
-
一句話:通配符匹配路由鍵,按層級靈活分發。
四、數據隔離
給不同的項目創建不同的用戶,然后不同的用戶使用不同的虛擬主機,這樣就達成了數據的隔離。
1、添加新用戶
2、查看用戶列表
3、切換到新用戶,并創建虛擬主機。
(注意:創建的虛擬主機直接就屬于當前登錄用戶的)
查看虛擬主機: