iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0

之前一直有想學其他的 Message Queue,趁這次機會和大家一起來好好瞭解 RabbitMQ

What is RabbitMQ

RabbitMQ 是一個開源的 Message queue 軟體,他是用 AMQP (Advanced Message Queuing Protocol) 來實現,但也支援其他協定,如 MQTT、STOMP 和 HTTP。它也支援多種程式語言,如: Python、PHP、GO、Swift 等。這使它在多種情境和不同應用下都能具備很好的靈活性。

重要組件

https://ithelp.ithome.com.tw/upload/images/20241005/20150927tjl8slfMsA.png

  • Producer
    These are applications or services that generate and send messages to RabbitMQ. The messages are sent to an exchange.
    • 負責將服務或應用所產生的訊息透過 exchange 傳送到 Queue。
  • Queue
    Queues store messages until they are consumed by consumers.
    • 會存放 Producer 傳送的訊息,直到被 Counsumer 消費(使用)。
  • Consumer
    These are applications or services that receive and process messages from RabbitMQ.
    • 指的是其他接收的應用或服務,也就是訊息的接收方。
  • Exchange
    RabbitMQ routes the messages from producers to appropriate queues using exchanges.
    • 它會將訊息從 producer 中傳送到正確的 Queue 裡,他有不同的模式,Direct、Topic 等。

執行模式

  1. Direct
    https://ithelp.ithome.com.tw/upload/images/20241005/20150927eV7CVlyn6W.png
    最簡單的模式,只有單一 Producer 不透過 Exchange 直接傳到 Queue 中,每個 Queu 也只有一個 Consumer 會接收。

  2. Work Queue
    https://ithelp.ithome.com.tw/upload/images/20241005/20150927oFbE2zVXyz.png
    和 Direcr 較像,只是會有多個 Consumer 會去接收。

  3. Publish/Subscribe
    https://ithelp.ithome.com.tw/upload/images/20241005/20150927JS4qm3bYVP.png
    就是發布和訂閱的模式,Consumer 可以訂閱 Queue,訂閱的 Consumer 就可以接收到 Queue 的訊息。

  4. Routing
    https://ithelp.ithome.com.tw/upload/images/20241005/20150927OTIoXlsLjD.png
    Routing 算是 Work Queue 的加強版,他可以透過 routing key,讓 EXCHANGE 可以知道要發到哪個 Queue中,我們可以透過程式的過濾,限制要傳送的 Queue。

  5. Topics
    https://ithelp.ithome.com.tw/upload/images/20241005/20150927pAYkwuhxdC.png

  • Producer 將訊息發送到 Exchange,並指定一個 Routing Key。這個 Routing Key 是一個由點分隔的字串,例如:logs.info 或 orders.payment.success。
  • Queue 與 Topic Exchange 綁定,並指定一個 Binding Key。Binding Key 是一個由點分隔的字串,可以包含特殊字元,如:
    • 號):配對單個字串位置。例如,logs.* 可以配對 logs.info 或 logs.error。
  • 當訊息被發送到 Exchange 時,Exchange 根據訊息的 Routing Key 和 Queue 綁定的 Binding Key 進入配對,然後將訊息傳送到符合配對條件的 Queue。
  1. RPC
    https://ithelp.ithome.com.tw/upload/images/20241005/20150927vzDkebU7oy.png
    https://ithelp.ithome.com.tw/upload/images/20241005/201509272QAatswoyl.png
    支援 RPC 的方式。

Reference


上一篇
Day-20 | Message Queue - MQTT
下一篇
Day-22 | Message Queue - RabbitMQ (2) feat. Python
系列文
埋藏在後端工程下的地雷與寶藏30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言