新手實戰 RabbitMQ:Producer、Exchange、Queue 和 Consumer 的基本介紹

更新於 發佈於 閱讀時間約 4 分鐘
raw-image

RabbitMQ 是一套基於 AMQP(Advanced Message Queuing Protocol) 協定開發的開源應用,其核心的概念就是接收消息、暫存消息、最後將訊息傳遞到 Consumer。簡單來說,我們可以把它想像成是寄放信件的郵局,郵局會負責收取信件、妥善保管,然後再將信件派發給收件人。

其中「Consumer」這個詞彙可能會讓讀者感到疑惑,下面將會逐步說明 RabbitMQ 中常用的專有名詞與運作機制,幫助大家更清楚理解其實際應用。


RabbitMQ 存在著幾種機制,在了解這接機制之前,先來介紹一些名詞所表達的概念:

  • Producer
  • Exchange
  • Queue
  • Consumer

- Producer

Producer 負責建立訊息,並且傳送到 Queue 內,其來源可能是程式或任何產生訊息的應用。在大部分的設計上,訊息會先經過 Exchange,再由 Exchange 進行分發。

從 Producer 的角度來看,它的任務僅限於將訊息傳遞給 Queue 或 Exchange,後續任何的分發就與它無關。

- Exchange

在特定架構中,Exchange 會接收 Producer 發送的訊息,並根據訊息中的 Routing key 及 Exchange 類型 (如 direct、topic、fanout 等) 來決定將訊息路由到一個或多個 Queue。

*如果沒有符合條件的 Queue,即使訊息傳送給 Exchange,最終也不會被分發到 Queue

- Queue

又稱為 Message Queue,負責儲存來自 Producer 或 Exchange 的訊息。這些訊息遵循 FIFO(First In First Out, 先進先出) 的規則,由 Consumer 主動拉取並進行處理。即使沒有任何 Consumer 在線,訊息仍會被妥善保存,直到被取用為止。

*這邊要特別注意 Queue 不會主動發送任何訊息,而是等待 Consumer 來做處理

- Consumer

Consumer 會從訂閱的 Queue 中拉取訊息並進行處理。處理完成後,通常會發送回執訊息,通知 RabbitMQ 可以將該訊息從 Queue 中移除。這個過程代表 RabbitMQ 的最後階段,完成了訊息的接收、暫存直到最終處理。

資料來源 - https://jstobigdata.com/

資料來源 - https://jstobigdata.com/


在初步了解 RabbitMQ 後,會發現它是一種暫存訊息的應用,有實務經驗的讀者可能會覺得它與 Redis 相似,兩者也確實常被拿來比較,但在實際應用上它們存在著顯著差異。Redis 更偏向快取機制,其儲存於記憶體中,儲存空間較小,主要用於短期操作;相較之下,RabbitMQ 能夠儲存較大的訊息,並且可以存放更長時間,更適合需要持久化訊息的場景。​

本篇提供 RabbitMQ 的基礎概念,下篇『新手實戰 RabbitMQ:RabbitMQ 安裝與 Server 建立』中會有更深入的介紹。

留言
avatar-img
留言分享你的想法!
avatar-img
Alan的沙龍
0會員
11內容數
不定期技術文章、旅遊、人生見解分享
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
我們在「【Message Queue - Kafka】串流時代的超入門簡介」有介紹到關於Kafka的基礎概念, 那麼本章節主要著重於生產者(Producer)的面向來細部探討, 看看生產者(Producer)究竟是什麼? 有哪些應該要注意的? 我們今天的主題除了說明生產者(Producer)的
Thumbnail
我們在「【Message Queue - Kafka】串流時代的超入門簡介」有介紹到關於Kafka的基礎概念, 那麼本章節主要著重於生產者(Producer)的面向來細部探討, 看看生產者(Producer)究竟是什麼? 有哪些應該要注意的? 我們今天的主題除了說明生產者(Producer)的
Thumbnail
我們在「【Message Queue - Kafka】不斷的試誤…, 用Docker來嘗試安裝Kafka」有介紹如何架設kafka, 其中我們使用環境變數來進行kafka的配置, 但除了環境變數之外, 其實還能夠用檔案配置的方式來對kafka進行配置, 如此一來我們就可以將配置檔與啟動檔完全分開,
Thumbnail
我們在「【Message Queue - Kafka】不斷的試誤…, 用Docker來嘗試安裝Kafka」有介紹如何架設kafka, 其中我們使用環境變數來進行kafka的配置, 但除了環境變數之外, 其實還能夠用檔案配置的方式來對kafka進行配置, 如此一來我們就可以將配置檔與啟動檔完全分開,
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
Thumbnail
連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
Thumbnail
核心元件 Spring Boot:Spring Cloud的基礎框架。 Spring Cloud Starters:Spring Boot的依賴管理。 Consul:微服務系統的註冊中心。 Eureka:微服務系統的註冊中心。 Feign:簡化微服務之間的溝通方式。 Ribbon:處理程
Thumbnail
核心元件 Spring Boot:Spring Cloud的基礎框架。 Spring Cloud Starters:Spring Boot的依賴管理。 Consul:微服務系統的註冊中心。 Eureka:微服務系統的註冊中心。 Feign:簡化微服務之間的溝通方式。 Ribbon:處理程
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News