跳轉到

RabbitMQ

Overview

img

在 RabbitMQ 中,有些模式會在 Producer 與 Queue 之間加上一層 Exchange

  • Exchange 透過綁定與 Queue 連結,負責接收來自 Producer 的訊息,然後將訊息推送給 Queue。
  • 透過定義 Exchange 的類型來判斷要如何處理收到的訊息,是要推送給哪個特定 Queue?還是要推送給多個 Queue?或是應該被丟棄?
  • Exchange 的類型分為 direct, topic, fanout

img

常見的五種模式

1. Simple

img

最簡單的模式,只有一個 Producer 傳送 message 到 Queue 裡,也只有一個 Consumer 去 Queue 裡拿 message。

2. Worker

img

兩個以上的 Consumer 從同一個 Queue 取出訊息,且 Consumer 彼此間不會取得相同的訊息。

3. Publish/Subscribe

img

Exchange(type=fanout) 會把訊息廣播給所有綁定的 Queue,每個 Consumer 都會取得相同的訊息。

4. Routing

img

Producer 把 message 丟給 Exchange 時,同時在這個 message 上面帶上 routing key,Exchange(type=direct) 再根據 routing key,將 message 丟到綁定的 Queue 上。

img

這個模式特別的地方在於一個 routing key 可以綁定到多個 Queue

5. Topics

img

跟 Routing 模式很像,差別在於 routing key 可以用模糊綁定。

訊息「零遺失」

img

Reference