【Message Queue - RabbitMQ】模型架構

更新於 發佈於 閱讀時間約 3 分鐘

對於軟體世界中Message Queue有興趣的朋友可以先閱讀這一篇「【資訊軟體知識】井然有序的處理機制 - Message Queue」建立基礎知識之後,再來看看這一篇會更容易進入情境唷!

這次就進入我們一般常見的MQ軟體「RabbitMQ」, 我們先以圖示來了解RabbitMQ的模型架構, 之後的章節再來逐一介紹如何去使用, 以及如何規劃與設計Queue的策略, 過程中皆以實作讓大家可以動手做並加深印象。

● Publisher: 負責生產訊息。

● Message: 由header跟body組成, 交換機主要根據header的內容來將訊息送到正確的Queue。

● Connection: 用於傳遞消息的TCP連接,因此也可以採用SSL來提升傳輸安全性。

● Channel: 在同一條TCP connection中可以建立許多的channel,不同的執行緒可以藉由使用不同的channel做出訊息隔離,同時又可以共用同一條TCP connection。

● Exchange: 主要負責將Message送往正確的Queues。

● BindingKey: Exchange與Queue之間建立關係的key。

● Queue: 消息隊列,儲存訊息的地方。

● Virtual Host: 主要達到資源隔離的效果,也用來做權限管理,一個Virtual Host裡面可以有多的Exchanges、Queues,而權限控制的單位則是Virtual Host,可以理解為每個用戶擁有自己的獨立資源。

俯瞰上面的架構圖搭配每個元件的介紹後, 從左而右很簡單, 就想像一下真實情境「郵件配送」的場景, 送件者(Publisher)將郵件(Message)透過各種渠道(臨櫃/郵筒)將郵件送至郵局(Broker), 而郵局則負責排序、分類, 依照距離、優先程度進行配送, 郵差會根據處理過後的訊息配送至各地區的收件箱, 而收件者(Consumer)則根據自己的時間去收件箱領取自己的信件, 這就是整個MQ模型的運行實例, 其實並不難, 只是將送與收進行分流有效率的處理, 避免等待造成擁塞, 包括現代的物流都有著MQ的影子, 所以MQ在傳輸上引入了不同的流程, 讓彼此不必等待, 值得我們好好的學習一番。

下一個章節將會談談如何將RabbitMQ以Docker架設, 讓我們在虛擬環境底下不管失敗多少次都能夠試誤到成功。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 - 為什麼要加入?

歡迎加入一起練習寫作,賺取知識!

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
129會員
284內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2024/09/04
相信對於這一篇感興趣的朋友們都已經玩過kafka的Schema Registry了吧! 沒玩過得朋友也沒關係, 歡迎至「【🔒Message Queue - Kafka】傳輸訊息的標準格式制定者 Schema Registry」了解一下這是什麼玩意兒, 好了, 廢話不多說, 讓我們直接切入主題吧
Thumbnail
2024/09/04
相信對於這一篇感興趣的朋友們都已經玩過kafka的Schema Registry了吧! 沒玩過得朋友也沒關係, 歡迎至「【🔒Message Queue - Kafka】傳輸訊息的標準格式制定者 Schema Registry」了解一下這是什麼玩意兒, 好了, 廢話不多說, 讓我們直接切入主題吧
Thumbnail
2023/06/25
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
Thumbnail
2023/06/25
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
Thumbnail
2023/04/29
雖然我們的一般的狀況下我們都希望訊息能夠按照順序被處理, 但有時候我們仍希望某些重要的訊息能夠優先被處理,也就是插隊的概念,正好RabbitMQ也有提供這樣需求的解決方案,以下是需要知道的幾個重點。 宣告Queue的時候必須要設定 x-max-priority, 通常10就夠用了。 數字越大優先序越
Thumbnail
2023/04/29
雖然我們的一般的狀況下我們都希望訊息能夠按照順序被處理, 但有時候我們仍希望某些重要的訊息能夠優先被處理,也就是插隊的概念,正好RabbitMQ也有提供這樣需求的解決方案,以下是需要知道的幾個重點。 宣告Queue的時候必須要設定 x-max-priority, 通常10就夠用了。 數字越大優先序越
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
本文介紹如何使用 Docker 安裝 RabbitMQ,並將其與 Node.js 結合,實現訊息的生產與消費。這個架構可以應用於分佈式系統或事件驅動架構中,幫助讀者理解如何整合 RabbitMQ 與 Node.js。
Thumbnail
本文介紹如何使用 Docker 安裝 RabbitMQ,並將其與 Node.js 結合,實現訊息的生產與消費。這個架構可以應用於分佈式系統或事件驅動架構中,幫助讀者理解如何整合 RabbitMQ 與 Node.js。
Thumbnail
我已經在方格子上連續每天更新3篇文章90天了! 這件事真不容易!而背後的秘密就是打造「自動化文章生產線」。 要打造自己的生產線,首先要了解三個概念: 長篇文章(Hub) 短篇文章(Spoke) 表達模板(Template)
Thumbnail
我已經在方格子上連續每天更新3篇文章90天了! 這件事真不容易!而背後的秘密就是打造「自動化文章生產線」。 要打造自己的生產線,首先要了解三個概念: 長篇文章(Hub) 短篇文章(Spoke) 表達模板(Template)
Thumbnail
對於軟體世界中Message Queue有興趣的朋友可以先閱讀這一篇「【資訊軟體知識】井然有序的處理機制 - Message Queue」建立基礎知識之後,再來看看這一篇會更容易進入情境唷! 這次就進入我們一般常見的MQ軟體「RabbitMQ」, 我們先以圖示來了解RabbitMQ的模型架構, 之後
Thumbnail
對於軟體世界中Message Queue有興趣的朋友可以先閱讀這一篇「【資訊軟體知識】井然有序的處理機制 - Message Queue」建立基礎知識之後,再來看看這一篇會更容易進入情境唷! 這次就進入我們一般常見的MQ軟體「RabbitMQ」, 我們先以圖示來了解RabbitMQ的模型架構, 之後
Thumbnail
雖然我們的一般的狀況下我們都希望訊息能夠按照順序被處理, 但有時候我們仍希望某些重要的訊息能夠優先被處理,也就是插隊的概念,正好RabbitMQ也有提供這樣需求的解決方案,以下是需要知道的幾個重點。 宣告Queue的時候必須要設定 x-max-priority, 通常10就夠用了。 數字越大優先序越
Thumbnail
雖然我們的一般的狀況下我們都希望訊息能夠按照順序被處理, 但有時候我們仍希望某些重要的訊息能夠優先被處理,也就是插隊的概念,正好RabbitMQ也有提供這樣需求的解決方案,以下是需要知道的幾個重點。 宣告Queue的時候必須要設定 x-max-priority, 通常10就夠用了。 數字越大優先序越
Thumbnail
在進入Message Queue之前我們先來了解一下同步/非同步任務的概念。 菜單稱為訊息(Message), 為工作內容描述。 送出菜單的客人稱為生產者(Producer), 負責建立訊息。 櫃台就相當於Queue, 負責接單並依序處理。 廚師就是消費者的概念, 負責消化Queue裡面的訊息。 採
Thumbnail
在進入Message Queue之前我們先來了解一下同步/非同步任務的概念。 菜單稱為訊息(Message), 為工作內容描述。 送出菜單的客人稱為生產者(Producer), 負責建立訊息。 櫃台就相當於Queue, 負責接單並依序處理。 廚師就是消費者的概念, 負責消化Queue裡面的訊息。 採
Thumbnail
軟體世界隨著現實應用越來越複雜,需要處理的資料量也就隨之倍數增長,假設我們每一個動作都要等待處理完畢後再回應,那麼勢必對於廣大用戶的使用者體驗大打折扣,因此這個過程如果有一個中間人幫我們處理掉先來後到的流程,那麼是不是我只要將要進行的動作交給中間人即可,而背後處理的服務商則透過中間人依序處理,處理
Thumbnail
軟體世界隨著現實應用越來越複雜,需要處理的資料量也就隨之倍數增長,假設我們每一個動作都要等待處理完畢後再回應,那麼勢必對於廣大用戶的使用者體驗大打折扣,因此這個過程如果有一個中間人幫我們處理掉先來後到的流程,那麼是不是我只要將要進行的動作交給中間人即可,而背後處理的服務商則透過中間人依序處理,處理
Thumbnail
同樣宗旨的訊息,經由不同的傳播載體,所呈現出來的方式會有所不同,甚至改變了訊息本身。
Thumbnail
同樣宗旨的訊息,經由不同的傳播載體,所呈現出來的方式會有所不同,甚至改變了訊息本身。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News