高級消息隊列協議AMQP簡介

 更新時間:2022年07月02日 14:39:40   作者:天方  
這篇文章簡單介紹了高級消息隊列協議AMQP,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

歷史:

Message Queue的需求由來已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的產品,當時的Message queuing軟件叫做:the information bus(TIB)。 TIB被電信和通訊公司采用,路透社收購了Teknekron公司。之后,IBM開發了MQSeries,微軟開發了Microsoft Message Queue(MSMQ)。這些商業MQ供應商的問題是廠商鎖定,價格高昂。2001年,Java Message queuing試圖解決鎖定和交互性的問題,但對應用來說反而更加麻煩了。

于是2004年,摩根大通和iMatrix開始著手Advanced Message Queuing Protocol (AMQP)開放標準的開發。2006年,AMQP規范發布。2007年,Rabbit技術公司基于AMQP標準開發的RabbitMQ 1.0 發布。

基本概念

AMQP基本模型如下圖所示:    

Broker:

接收和分發消息的應用,如RabbitMQ Server就是Message Broker。

Virtual host:

出于多租戶和安全因素設計的,把AMQP的基本組件劃分到一個虛擬的分組中,類似于網絡中的namespace概念。

Exchange

交換器是消息送達的實體。他是具名的,它是消息的第一站。系統根據分發規則,匹配查詢表中的routing key,分發消息到queue中去。

屬性:

  • durable:該交換器將在broker重啟后生效。

  • auto-delete:該交換器將在沒有消息隊列綁定時自動刪除。一個從未綁定任何隊列的交換器不會自動刪除。

類型:

  • direct (point-to-point)

  • fanout (multicast)

  • topic (publish-subscribe)

Queue

隊列是接收消息的實體,具有名字和屬性,但沒有類型??蛻舳丝梢杂嗛嗞犃幸员闶筨roker遞送某消息隊列的內容到該客戶端。

屬性:

  • alternate-exchange :當消息被訂閱者拒絕或者由于隊列被刪除而孤立時則被送往此交換器,同時隊列中的該消息被刪除。

  • passive :當隊列不存在時會拋出一個錯誤信息,仍然不會被聲明。

  • durable :隊列將在broker重啟時啟動。

  • exclusive :隊列僅服務于一個客戶端。

  • auto-delete :隊列在沒有活躍訂閱者的時候將自動刪除。當客戶端終結時,exclusive類型的隊列則一定會自動刪除。

Binding

綁定是隊列和交換器之間的關系,規定消息如何由交換器到隊列。綁定的屬性被交換器用來與路由算法匹配。

當一個消息的路由關鍵字與綁定中的模式匹配時,交換器會把該消息的拷貝送達隊列。如何進行匹配僅依賴于交換器的類型:

  • direct型 :消息的路由關鍵字與綁定相同。

  • fanout型 :總是匹配,即使綁定無關鍵字。

  • topic型 :匹配路由關鍵字屬性,字符串的各個部分以'.'分隔??砂瑑蓚€特殊字符:'*'表示單個任意詞,'#'表示0個或多個詞,例如 *.stock.# 匹配usd.stock和eur.stock.db,但不匹配stock.nasdaq。

  • headers型 :匹配各個鍵-值對的邏輯組合結果。

Connection:

publisher/consumer和broker之間的TCP連接。斷開連接的操作只會在client端進行,Broker不會斷開連接,除非出現網絡故障或broker服務出現問題。

Channel:

如果每一次訪問RabbitMQ都建立一個Connection,在消息量大的時候建立TCP Connection的開銷將是巨大的,效率也較低。

Channel是在connection內部建立的邏輯連接,如果應用程序支持多線程,通常每個thread創建單獨的channel進行通訊,AMQP method包含了channel id幫助客戶端和message broker識別channel,所以channel之間是完全隔離的。Channel作為輕量級的Connection極大減少了操作系統建立TCP connection的開銷。

到此這篇關于高級消息隊列協議AMQP的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 字符編碼詳解(基礎)

    字符編碼詳解(基礎)

    字符編碼問題, 對于一個在偉大天朝的程序員來說, 幾乎不可能遇不到, 從我剛開始接觸Coding到現在, 亂碼, 編碼轉換問題就好像一直沒有停息過.
    2009-09-09
  • hadoop遷移數據應用實例詳解

    hadoop遷移數據應用實例詳解

    這篇文章主要介紹了hadoop遷移數據應用實例,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Intellij idea2020永久破解,親測可用?。?!

    Intellij idea2020永久破解,親測可用?。?!

    隨著 IDEA 的 2020 版本的發布,新增和優化了很多的功能,今天來講一講如何永久破解,親測可用,對idea2020永久破解 教程感興趣的朋友可以跟隨小編一起看看吧
    2020-05-05
  • 從實例分析ELF格式的.gnu.hash區與glibc的符號查詢全過程

    從實例分析ELF格式的.gnu.hash區與glibc的符號查詢全過程

    把ELF格式是如何組織一個符號,以及動態鏈接器如何讀取并處理這些信息以進行符號查詢的全過程詳細地講清楚,本文的實現以及so文件均以glibc 2.31為準,對ELF格式的.gnu.hash區與glibc的符號查詢知識感興趣的朋友一起學習吧
    2021-05-05
  • PHP實現HTML標簽自動補全代碼

    PHP實現HTML標簽自動補全代碼

    開發各種項目中經常遇到截取html字符串問題。 比如博客文章列表頁面截取一部分正文、文章正文翻頁截取等
    2012-10-10
  • OAuth從1.0到2.1的發展之路

    OAuth從1.0到2.1的發展之路

    OAUTH協議為用戶資源的授權提供了一個安全的、開放而又簡易的標準。簡單來說就是提供除了"賬戶密碼"驗證方式以外的驗證授權方式。這篇文章介紹了OAuth從1.0到2.1的發展之路,感興趣的同學可以收藏一下
    2021-11-11
  • Atom-IDE 的使用方法簡單介紹

    Atom-IDE 的使用方法簡單介紹

    這篇文章主要介紹了Atom-IDE 的使用方法簡單介紹的相關資料,Facebook 和 GitHub 兩大巨頭聯手推出 Atom-IDE,這里介紹下如何使用,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Git的撤銷、修改和回退命令

    Git的撤銷、修改和回退命令

    這篇文章介紹了Git的撤銷、修改和回退命令,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • 深入淺析ELK原理與簡介

    深入淺析ELK原理與簡介

    ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。這篇文章主要介紹了ELK原理與介紹,需要的朋友可以參考下
    2021-09-09
  • HTTP狀態代碼集合 方便查詢

    HTTP狀態代碼集合 方便查詢

    HTTP協議是基于請求/響應范式的。一個客戶機與服務器建立連接后,發送一個請求給服務器,請求方式的格式為,統一資源標識符、協議版本號,后邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。
    2011-02-02

最新評論

美丽人妻被按摩中出中文字幕