【Message Queue】關於Message Queue的幾個常見傳輸協定

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

AMQP協議

Advanced Message Queuing Portocol(高級訊息佇列協議)

raw-image
  • Producer: 生產者, 負責生產訊息並送到交換機。
  • Broker: Message Queue的服務器(RabbitMQ…之類的產品)
  • Exchange: 交換器, 它指定訊息按照什麼樣的規則送到哪個Queue。
  • Binding: 綁定規則, 後面會介紹幾種常用的MQ模式。
  • Queue: 消息隊列, 每條訊息都會被送到一個或多個Queue。
  • Consumer: 消費者, 負責接收與處理訊息。

特點

  • 金融業發展出來用於交易所訊息交換的協定。
  • 發布者、交換機、隊列、消費者都可以有多個。因為AMQP是一種網路協議, 所以過程中的發布者、消費者、代理都能分佈在不同的設備上。
  • 發布消息時可以帶上消息屬性(Message Meta), 有些屬性可以被消息代理(Brokers)使用, 有些則為不透明的, 只能被消費者使用。
  • 由於必須假設網路是不可靠的, 因此可能某個消費者處理訊息的過程中可能掛掉, 基於此原因AMQP協議就包含了消息確認(Message Acknowledgements)機制, 確保收到來自消費者的訊息後才將該筆訊息從Queue中刪除。

Exchange交換機

為什麼需要Exchange而不是直接將訊息發送到Queue呢?

AMQP的核心思想就是讓生產者與消費者之間解耦, 因此生產者只需要一直生產消息並不需要知道這條消息會被送到哪個Queue, 而送到哪個Queue的工作就是交換機的事情了, 如此一來生產者與消費者的工作就更加單純。

以下是三種主要的交換機類型:

直連交換機(Direct Exchange)

raw-image

假設我們要把錯誤訊息寫到文件中, 此時可以使用Routing key並指定為error, 將訊息送到Error的Queue中再由相對的Consumer去做處理。

扇型交換機(Fanout Exchange)

raw-image

這種類型的交換機就像廣播一樣, 將收到的訊息分發給所有的queue, 再由各個對應的Consumer去處理, 由於廣播的特性, 因此能夠應用在線上系統, 例如群聊。

主題交換機(Topic Exchange)

raw-image

Topic Exchange其實跟Direct Exchange很類似, 差別在於Direct Exchange是精確匹配, 而Topic Exchange則是可以訂定一些規則。

STOMP協議

Simple Text Orientated Messaging Protocol(簡單文本消息協議)。

以文本方式傳輸,頻寬耗費較大,發展主要目的是讓網頁瀏覽器與訊息系統進行雙向溝通。

COMMAND
header1:value1
header2:value2
Body^@
SEND
destination:/broker/roomId/1
content-length:57
{“type”:”ENTER”,”content”:”o7jD64gNifq-wq-C13Q5CRisJx5E”}

MQTT協議

基於二進制的傳輸協定,格式簡潔、佔用頻寬較小、支持QOS、適用於IOT,採用發布/訂閱模式。

raw-image

主題的描述方式

Sensor/Temperature/Room1

Sensor/Temperature/Room2

raw-image

進階的用法

  1. 取得所有房間的溫濕度: Sensor/#
  2. 取得Room1的溫度與濕度: Sensor/+/Room1

如果這篇文章對你有幫助,請不要吝嗇您的LIKE👍

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
131會員
292內容數
哈囉,我是阿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/06/16
對於軟體世界中Message Queue有興趣的朋友可以先閱讀這一篇「【資訊軟體知識】井然有序的處理機制 - Message Queue」建立基礎知識之後,再來看看這一篇會更容易進入情境唷! 這次就進入我們一般常見的MQ軟體「RabbitMQ」, 我們先以圖示來了解RabbitMQ的模型架構, 之後
Thumbnail
2023/06/16
對於軟體世界中Message Queue有興趣的朋友可以先閱讀這一篇「【資訊軟體知識】井然有序的處理機制 - Message Queue」建立基礎知識之後,再來看看這一篇會更容易進入情境唷! 這次就進入我們一般常見的MQ軟體「RabbitMQ」, 我們先以圖示來了解RabbitMQ的模型架構, 之後
Thumbnail
看更多
你可能也想看
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
目的 當消費者和生產者在某個節點故障之下還能夠正常運作。 增加多個節點來擴展訊息的吞吐量。 簡單來說就是打群架,透過多台主機的方式處理龐大的訊息量。 集群的模式有哪些? Cluster: 不支持跨網段。 可以隨意動態增加/減少。 目前常用的方式。 Federation: 應用
Thumbnail
目的 當消費者和生產者在某個節點故障之下還能夠正常運作。 增加多個節點來擴展訊息的吞吐量。 簡單來說就是打群架,透過多台主機的方式處理龐大的訊息量。 集群的模式有哪些? Cluster: 不支持跨網段。 可以隨意動態增加/減少。 目前常用的方式。 Federation: 應用
Thumbnail
由於區塊鏈世界本身無法調用外部API,是封閉世界,需透過預言機才能知道外部服務和API資料並且加以取用。
Thumbnail
由於區塊鏈世界本身無法調用外部API,是封閉世界,需透過預言機才能知道外部服務和API資料並且加以取用。
Thumbnail
AMA AMA 是指 “Ask Me Anything” 的縮寫,中文翻譯為「問我任何事」。AMA 是一種自由互動的活動形式,常見於區塊鏈社區,尤其是虛擬貨幣交易所和幣種項目方社區。在 AMA 活動中,知名人士、項目方工作人員或社群成員會在特定的時間回答社區提出的問題。 這種活動通常在線上進行,推特
Thumbnail
AMA AMA 是指 “Ask Me Anything” 的縮寫,中文翻譯為「問我任何事」。AMA 是一種自由互動的活動形式,常見於區塊鏈社區,尤其是虛擬貨幣交易所和幣種項目方社區。在 AMA 活動中,知名人士、項目方工作人員或社群成員會在特定的時間回答社區提出的問題。 這種活動通常在線上進行,推特
Thumbnail
在上一章有提到區塊鏈主要是一些點到點的交易紀錄,就像我們一般在買東西一樣,要完成一樁交易會有幾個要件:消費者、供應者、第三方見證者、費用以及商品,在區塊鏈上的交易(Web3稱為鑄造Mint)也是如此,這一章就來了解一下這幾個重要角色。
Thumbnail
在上一章有提到區塊鏈主要是一些點到點的交易紀錄,就像我們一般在買東西一樣,要完成一樁交易會有幾個要件:消費者、供應者、第三方見證者、費用以及商品,在區塊鏈上的交易(Web3稱為鑄造Mint)也是如此,這一章就來了解一下這幾個重要角色。
Thumbnail
你是否有想過,在眾多 DEX (去中心化交易所) 中,為什麼 AMM (自動做市商模型) 可以獨霸江山?什麼樣的 AMM 才會成功?為什麼 Curve 交易量可以超越 Uniswap 成為龍頭?為什麼 Balancer 要設計多代幣池?其實這些問題的答案只要搞清楚 AMM 的核心思維就可以迎刃而解。
Thumbnail
你是否有想過,在眾多 DEX (去中心化交易所) 中,為什麼 AMM (自動做市商模型) 可以獨霸江山?什麼樣的 AMM 才會成功?為什麼 Curve 交易量可以超越 Uniswap 成為龍頭?為什麼 Balancer 要設計多代幣池?其實這些問題的答案只要搞清楚 AMM 的核心思維就可以迎刃而解。
Thumbnail
前言 區塊鏈的應用從以太坊出現後開始蓬勃發展,以太坊導入智能合約,使得許多應用在沒有中間機構的情況下依然能正常運作。 智能合約就是在區塊鏈上執行的程式,給程式輸入值,它就會按照寫好的規則給你輸出值,Ex: 一個NBA運彩的智能合約,你壓的錢和球隊就是智能合約的輸入值,等到比賽結束,智能合約會判定你壓
Thumbnail
前言 區塊鏈的應用從以太坊出現後開始蓬勃發展,以太坊導入智能合約,使得許多應用在沒有中間機構的情況下依然能正常運作。 智能合約就是在區塊鏈上執行的程式,給程式輸入值,它就會按照寫好的規則給你輸出值,Ex: 一個NBA運彩的智能合約,你壓的錢和球隊就是智能合約的輸入值,等到比賽結束,智能合約會判定你壓
Thumbnail
Chainlink是一個去中心化的預言機項目,其業務被廣泛使用在各種Dapp,是區塊鏈行業的重要的基礎設施,本文會介紹Chainlink的業務、代幣經濟、今年下半年會推出的Chainlink Staking,以及其中是否有什麼投資機會。 什麼是預言機? 預言機(Oracle)是一種服務,串連鏈
Thumbnail
Chainlink是一個去中心化的預言機項目,其業務被廣泛使用在各種Dapp,是區塊鏈行業的重要的基礎設施,本文會介紹Chainlink的業務、代幣經濟、今年下半年會推出的Chainlink Staking,以及其中是否有什麼投資機會。 什麼是預言機? 預言機(Oracle)是一種服務,串連鏈
Thumbnail
去中心化交易所是什麼,你知道嗎? 它的誕生為整個 DeFi 生態帶來高峰,更作為一項基礎且重要的發明,加速了世人對新興金融的追崇。 今日文章,Kirin 將要介紹去中心化交易所運作原理,以及它存在優劣勢有哪些? 並藉由自身使用經驗,為你分享去中心化交易所多個面向。 什麼是去中心化交易所(DEX)?
Thumbnail
去中心化交易所是什麼,你知道嗎? 它的誕生為整個 DeFi 生態帶來高峰,更作為一項基礎且重要的發明,加速了世人對新興金融的追崇。 今日文章,Kirin 將要介紹去中心化交易所運作原理,以及它存在優劣勢有哪些? 並藉由自身使用經驗,為你分享去中心化交易所多個面向。 什麼是去中心化交易所(DEX)?
Thumbnail
鬍子哥帶給大家正向的人生哲學,保持帥氣(Stay Hansum)!
Thumbnail
鬍子哥帶給大家正向的人生哲學,保持帥氣(Stay Hansum)!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News