一、RabbitMQ的架構圖
- Broker = MQ 服務器:消息中轉站。
- VirtualHost:虛擬主機,具備隔離效果的一個空間,一個MQ有多個VirtualHost空間。
- exchange:交換機,判斷並分配消息的路由到各個隊列中。
- queue:隊列,是可以存儲消息的容器。
- Publisher:消息生產者,用來生產與發送消息的角色。
- Consumer:消息消費者,用來接收、消費消息的角色。
二、RabbitMQ的五種模式及其能夠達到的效果
1、簡單模式 Simple.queues
一條龍服務:生產者P 直接生產發送消息,儲存到隊列Q 中,最終由消費者C 接收消費消息。
2、工作隊列模式 Work.Queues
一個供應商,多個消費者:生產者P 直接生產發送消息,儲存到隊列Q 中,最終被多個消費者C 接收消費消息。
多個消費者C 之間是平等的競爭關係。
3、發佈訂閲模式 Publish/Subscribe
無條件路由羣發:管控台創建兩個隊列Q ,一個交換機X,並綁定交換機與隊列。
生產者P 生產發送消息到交換機X中,交換機X判斷並分配消息給不同的隊列Q1、Q2 進行儲存,最終被對應隊列的消費者C1、C2 接收消費消息。
X-->Q 無路由規則:交換機類型為 fanout,表示為扇出,其實就是無條件羣發。
4、路由模式 Routing
精準路由定位:交換機X 到隊列Q 的過程,有精確的路由規則-->交換機X 到隊列Q 的路由規則有a、b、c,只要路由匹配,就會將消息儲存到對應的隊列Q 中,再給消費者。
5、Topic模式 Topics
模糊路由匹配:交換機X 到隊列Q 的過程,有模糊的路由規則-->* 和 # 代表佔位符,可以進行模糊匹配。
圖中的交換機X 到隊列Q 的路由規則有 .a. 和..b 以及 c.# ,假設此時從交換機X 到隊列Q 有一路徑為 c.a.b,那麼三個路由均可通過。其中,X 到Q2 有兩條路徑匹配,消息只會走其中一條路徑,Q2中只儲存一條該消息。