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

閱讀時間約 3 分鐘

AMQP協議

Advanced Message Queuing Portocol(高級訊息佇列協議)
  • 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)
假設我們要把錯誤訊息寫到文件中, 此時可以使用Routing key並指定為error, 將訊息送到Error的Queue中再由相對的Consumer去做處理。
扇型交換機(Fanout Exchange)
這種類型的交換機就像廣播一樣, 將收到的訊息分發給所有的queue, 再由各個對應的Consumer去處理, 由於廣播的特性, 因此能夠應用在線上系統, 例如群聊。
主題交換機(Topic Exchange)
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,採用發布/訂閱模式。
主題的描述方式
Sensor/Temperature/Room1
Sensor/Temperature/Room2
進階的用法
  1. 取得所有房間的溫濕度: Sensor/#
  2. 取得Room1的溫度與濕度: Sensor/+/Room1
如果這篇文章對你有幫助,請不要吝嗇您的LIKE👍
為什麼會看到廣告
105會員
248內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
假設我們每個Queue都只對應一個消費者,那麼就不會有分配問題,但如果今天我們有多個消費者的時候,這時候要怎麼分發?如何做到公平? 一、輪流分發 預設採輪流分發,假設有三個消費者同時消費,則如下圖,訊息平均分配給各個消費者處理。 這種分發方式並未考慮到Consumer的處理能力,假設Consumer
早期的 nodejs 為了具有多線程的能力而引入了 cluster 模組, 但這種創建線程的方式會犧牲共享內存, 且數據通信必須透過 json 來傳輸, 因此具有一定的侷限性及性能問題。 而後發展了worker-threads這個模組之後, 具備共享內存的功能, 使其更輕量。 nodejs 在v1
概念: 有限時間內可使用通行證來要求對應的操作權限。 JWT 的組成內容有三個部分,由 . 做區隔,最後透過這三個部分,串成一個 Jwt 字串 [HEADER].[PAYLOAD].[SIGNATURE] 1. Header: 主要記載認證的方法 {     "typ": "JWT",     "
假設我們每個Queue都只對應一個消費者,那麼就不會有分配問題,但如果今天我們有多個消費者的時候,這時候要怎麼分發?如何做到公平? 一、輪流分發 預設採輪流分發,假設有三個消費者同時消費,則如下圖,訊息平均分配給各個消費者處理。 這種分發方式並未考慮到Consumer的處理能力,假設Consumer
早期的 nodejs 為了具有多線程的能力而引入了 cluster 模組, 但這種創建線程的方式會犧牲共享內存, 且數據通信必須透過 json 來傳輸, 因此具有一定的侷限性及性能問題。 而後發展了worker-threads這個模組之後, 具備共享內存的功能, 使其更輕量。 nodejs 在v1
概念: 有限時間內可使用通行證來要求對應的操作權限。 JWT 的組成內容有三個部分,由 . 做區隔,最後透過這三個部分,串成一個 Jwt 字串 [HEADER].[PAYLOAD].[SIGNATURE] 1. Header: 主要記載認證的方法 {     "typ": "JWT",     "
你可能也想看
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
你聽過這首Led Zeppelin(齊柏林飛船)發行於1971年代的神曲嗎?這首歌在2000年被VH1評選為100首最偉大的搖滾歌曲時排名第三,而且在2010年滾石雜誌的500首有史以來的最佳歌曲中排名第31位。
Thumbnail
其實投資超成長股,你就把它想成,你就是在投資一家公司的早期階段罷了。現在的公司,最早在新創階段,去投資的就像是孫正義的軟銀天使基金那樣。接著天使錢籌一籌,就可能會上市。在這些早期階段的公司,要求獲利反而是一件害他們的事情。
自組織從來都不應該是組織或是團隊所追求的目標。
Thumbnail
在敏捷體系中,Scrum Master(SM)的存在是為了讓開發團隊把事情完成得更好;所以不是SM要求團隊完成事情,是團隊要求SM幫助他們進步。如果Scrum Master沒有要求團隊做什麼的權力,那事情該如何才能完成呢?
Thumbnail
<p>閃手大師與憤怒五人組(Grandmaster Flash and the Furious Five)從1970年代後半開始,成為嘻哈音樂中不可忽視的超級要角,同時也可以算是此文化的開山鼻祖之一;而當時間慢慢進入到1980年代之後,他們總算在1982年推出了首張正式專輯《The Message》。其中的同名歌曲〈The Message〉蘊含大量的社會反思和批判,讓嘻哈與饒舌音樂逐漸步向一個新的時代。</p>
Thumbnail
  ●2009大陸電影【風聲 The Message】我相信,愛我的人會明白我的心情 (周迅 李冰冰 張涵予 黃曉明 蘇有朋)  看諜戰片,讓我神經變得敏感,眼光變得犀利,注意力變得集中。這類影片或電視劇我愛看,我從小對「諜戰」充滿好奇而沒有抵抗力
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
你聽過這首Led Zeppelin(齊柏林飛船)發行於1971年代的神曲嗎?這首歌在2000年被VH1評選為100首最偉大的搖滾歌曲時排名第三,而且在2010年滾石雜誌的500首有史以來的最佳歌曲中排名第31位。
Thumbnail
其實投資超成長股,你就把它想成,你就是在投資一家公司的早期階段罷了。現在的公司,最早在新創階段,去投資的就像是孫正義的軟銀天使基金那樣。接著天使錢籌一籌,就可能會上市。在這些早期階段的公司,要求獲利反而是一件害他們的事情。
自組織從來都不應該是組織或是團隊所追求的目標。
Thumbnail
在敏捷體系中,Scrum Master(SM)的存在是為了讓開發團隊把事情完成得更好;所以不是SM要求團隊完成事情,是團隊要求SM幫助他們進步。如果Scrum Master沒有要求團隊做什麼的權力,那事情該如何才能完成呢?
Thumbnail
<p>閃手大師與憤怒五人組(Grandmaster Flash and the Furious Five)從1970年代後半開始,成為嘻哈音樂中不可忽視的超級要角,同時也可以算是此文化的開山鼻祖之一;而當時間慢慢進入到1980年代之後,他們總算在1982年推出了首張正式專輯《The Message》。其中的同名歌曲〈The Message〉蘊含大量的社會反思和批判,讓嘻哈與饒舌音樂逐漸步向一個新的時代。</p>
Thumbnail
  ●2009大陸電影【風聲 The Message】我相信,愛我的人會明白我的心情 (周迅 李冰冰 張涵予 黃曉明 蘇有朋)  看諜戰片,讓我神經變得敏感,眼光變得犀利,注意力變得集中。這類影片或電視劇我愛看,我從小對「諜戰」充滿好奇而沒有抵抗力