【Message Queue - RabbitMQ】模型架構

閱讀時間約 2 分鐘
對於軟體世界中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架設, 讓我們在虛擬環境底下不管失敗多少次都能夠試誤到成功。
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識!
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
109會員
250內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
雖然我們的一般的狀況下我們都希望訊息能夠按照順序被處理, 但有時候我們仍希望某些重要的訊息能夠優先被處理,也就是插隊的概念,正好RabbitMQ也有提供這樣需求的解決方案,以下是需要知道的幾個重點。 宣告Queue的時候必須要設定 x-max-priority, 通常10就夠用了。 數字越大優先序越
這種方式主要是Consumer處理訊息失敗時, 再把訊息送回去重新排隊, 在RabbitMQ的架構下非常簡單, 只要在Error Handling的地方發送nack訊號回去即可。 這種方式雖然簡單, 但是也存在著一些風險: 由於Queue為了確保順序性, 因此該訊息會被重新排到最前面, 如此一來該訊
在進入Message Queue之前我們先來了解一下同步/非同步任務的概念。 菜單稱為訊息(Message), 為工作內容描述。 送出菜單的客人稱為生產者(Producer), 負責建立訊息。 櫃台就相當於Queue, 負責接單並依序處理。 廚師就是消費者的概念, 負責消化Queue裡面的訊息。 採
軟體世界隨著現實應用越來越複雜,需要處理的資料量也就隨之倍數增長,假設我們每一個動作都要等待處理完畢後再回應,那麼勢必對於廣大用戶的使用者體驗大打折扣,因此這個過程如果有一個中間人幫我們處理掉先來後到的流程,那麼是不是我只要將要進行的動作交給中間人即可,而背後處理的服務商則透過中間人依序處理,處理
AMQP協議 Advanced Message Queuing Portocol(高級訊息佇列協議) Producer: 生產者, 負責生產訊息並送到交換機。 Broker: Message Queue的服務器(RabbitMQ…之類的產品) Exchange: 交換器, 它指定訊息
假設我們每個Queue都只對應一個消費者,那麼就不會有分配問題,但如果今天我們有多個消費者的時候,這時候要怎麼分發?如何做到公平? 一、輪流分發 預設採輪流分發,假設有三個消費者同時消費,則如下圖,訊息平均分配給各個消費者處理。 這種分發方式並未考慮到Consumer的處理能力,假設Consumer
雖然我們的一般的狀況下我們都希望訊息能夠按照順序被處理, 但有時候我們仍希望某些重要的訊息能夠優先被處理,也就是插隊的概念,正好RabbitMQ也有提供這樣需求的解決方案,以下是需要知道的幾個重點。 宣告Queue的時候必須要設定 x-max-priority, 通常10就夠用了。 數字越大優先序越
這種方式主要是Consumer處理訊息失敗時, 再把訊息送回去重新排隊, 在RabbitMQ的架構下非常簡單, 只要在Error Handling的地方發送nack訊號回去即可。 這種方式雖然簡單, 但是也存在著一些風險: 由於Queue為了確保順序性, 因此該訊息會被重新排到最前面, 如此一來該訊
在進入Message Queue之前我們先來了解一下同步/非同步任務的概念。 菜單稱為訊息(Message), 為工作內容描述。 送出菜單的客人稱為生產者(Producer), 負責建立訊息。 櫃台就相當於Queue, 負責接單並依序處理。 廚師就是消費者的概念, 負責消化Queue裡面的訊息。 採
軟體世界隨著現實應用越來越複雜,需要處理的資料量也就隨之倍數增長,假設我們每一個動作都要等待處理完畢後再回應,那麼勢必對於廣大用戶的使用者體驗大打折扣,因此這個過程如果有一個中間人幫我們處理掉先來後到的流程,那麼是不是我只要將要進行的動作交給中間人即可,而背後處理的服務商則透過中間人依序處理,處理
AMQP協議 Advanced Message Queuing Portocol(高級訊息佇列協議) Producer: 生產者, 負責生產訊息並送到交換機。 Broker: Message Queue的服務器(RabbitMQ…之類的產品) Exchange: 交換器, 它指定訊息
假設我們每個Queue都只對應一個消費者,那麼就不會有分配問題,但如果今天我們有多個消費者的時候,這時候要怎麼分發?如何做到公平? 一、輪流分發 預設採輪流分發,假設有三個消費者同時消費,則如下圖,訊息平均分配給各個消費者處理。 這種分發方式並未考慮到Consumer的處理能力,假設Consumer
你可能也想看
Google News 追蹤
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
來到泰國一定要做的一件事絕對是按摩! 這家 Lar thai massage 不在清邁古城,也不在尼曼路,店址位於當地安安靜靜的居民區,雖然沒有高檔大氣的裝修,走的是溫馨家庭式路線。原本我已經連按了好幾天按摩,高檔跟便宜都有,可是肩背還是覺得很僵硬,來這裏按一次整個就鬆了很多。
Thumbnail
"You live for yourselves, not for humans." About trees and their feelings of sadness due to human interference.
Thumbnail
可能包含敏感內容
aurora是一家日式的情色按摩店,比一般的按摩店多出来的服务可能也就数气垫床服务了,妹子脱光了用大胸在你身上来回蹭的感觉,那种软软绵绵的感觉,让你既放松又血脉膨胀,确实是一般按摩效果无法达到的。
Thumbnail
可能包含敏感內容
什么是泰国的Massage?分两种,一种是常规的泰式足疗或者泰式按摩,价格便宜服务号。另一种是Body to Body Massage,也叫B2B Massage,当然,是由漂亮妹子给你全程服务的。价格比中国大陆的一线城市(北上广深杭)便宜多了,服务还更好,一对比下来,在国内找服务
Thumbnail
這篇文章將會講述如何使用程式腳本讀取 Input System 的玩家輸入。
Thumbnail
#有獎徵文至5/31截止 #穿越時光的message ❝留下一段穿越時光的祝福,向他/她說一聲:謝謝 ❞本次獎項1名,將獲得統一超商 500元虛擬商品卡乙張。
The President of the Republic of Belarus, Aleksandr Grigorievich Lukashenko, attended the Victory Day ceremony but did not attend the dinner party...
Thumbnail
Ask more, not less, of those you are inviting. Ask more of them than anyone ever has. Remind them who they are and help them become that.
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
來到泰國一定要做的一件事絕對是按摩! 這家 Lar thai massage 不在清邁古城,也不在尼曼路,店址位於當地安安靜靜的居民區,雖然沒有高檔大氣的裝修,走的是溫馨家庭式路線。原本我已經連按了好幾天按摩,高檔跟便宜都有,可是肩背還是覺得很僵硬,來這裏按一次整個就鬆了很多。
Thumbnail
"You live for yourselves, not for humans." About trees and their feelings of sadness due to human interference.
Thumbnail
可能包含敏感內容
aurora是一家日式的情色按摩店,比一般的按摩店多出来的服务可能也就数气垫床服务了,妹子脱光了用大胸在你身上来回蹭的感觉,那种软软绵绵的感觉,让你既放松又血脉膨胀,确实是一般按摩效果无法达到的。
Thumbnail
可能包含敏感內容
什么是泰国的Massage?分两种,一种是常规的泰式足疗或者泰式按摩,价格便宜服务号。另一种是Body to Body Massage,也叫B2B Massage,当然,是由漂亮妹子给你全程服务的。价格比中国大陆的一线城市(北上广深杭)便宜多了,服务还更好,一对比下来,在国内找服务
Thumbnail
這篇文章將會講述如何使用程式腳本讀取 Input System 的玩家輸入。
Thumbnail
#有獎徵文至5/31截止 #穿越時光的message ❝留下一段穿越時光的祝福,向他/她說一聲:謝謝 ❞本次獎項1名,將獲得統一超商 500元虛擬商品卡乙張。
The President of the Republic of Belarus, Aleksandr Grigorievich Lukashenko, attended the Victory Day ceremony but did not attend the dinner party...
Thumbnail
Ask more, not less, of those you are inviting. Ask more of them than anyone ever has. Remind them who they are and help them become that.