RabbitMQ
Overview
在 RabbitMQ 中,有些模式會在 Producer 與 Queue 之間加上一層 Exchange
:
- Exchange 透過綁定與 Queue 連結,負責接收來自 Producer 的訊息,然後將訊息推送給 Queue。
- 透過定義 Exchange 的類型來判斷要如何處理收到的訊息,是要推送給哪個特定 Queue?還是要推送給多個 Queue?或是應該被丟棄?
- Exchange 的類型分為
direct
,topic
,fanout
。
常見的五種模式
1. Simple
最簡單的模式,只有一個 Producer 傳送 message 到 Queue 裡,也只有一個 Consumer 去 Queue 裡拿 message。
2. Worker
兩個以上的 Consumer 從同一個 Queue 取出訊息,且 Consumer 彼此間不會取得相同的訊息。
3. Publish/Subscribe
Exchange(type=fanout)
會把訊息廣播給所有綁定的 Queue,每個 Consumer 都會取得相同的訊息。
4. Routing
Producer 把 message 丟給 Exchange 時,同時在這個 message 上面帶上 routing key,Exchange(type=direct)
再根據 routing key,將 message 丟到綁定的 Queue 上。
這個模式特別的地方在於一個 routing key 可以綁定到多個 Queue
5. Topics
跟 Routing 模式很像,差別在於 routing key 可以用模糊綁定。