AMQP概念模型

AMQP概念模型


Copyright (2013) 郭龍倉. All Rights Reserved.



寫在前面

MOM與Messge Broker

MOM與Message Broker其實是挺寬泛的概念,大部分情況下可以簡單認爲兩者是同義詞。

Messge Broker是不同應用之間的消息樞紐,負責實現應用之間的通信。Messge Broker將部分或者全部非核心業務相關的消息處理邏輯從應用中解耦出來,例如消息路由、語言/平臺無關性、同步/異步等等。

另外說一句廢話,Messge Broker是 Message based,not Stream。


AMQP

AMQP的全稱是Advanced Message Queuing Protocol,翻譯過來就是高級消息隊列協議。簡單來說,AMQP是一個廠商中立、語言無關的Message Broker規範。


AMQP規範中有幾個核心的概念:


  • Message

  • Virtual Host

  • Exchange

  • Queue

  • Binding

  • Routing Key

  • Binding Key

  • Exchange Type

  • Publisher/Producer

  • Subscriber/Consumer

  • Connection

  • Channel

Virtual Host

每個Message Broker由一個或 Virtual Host構成;可以類比一下理機和虛擬機。Virtual Host相當於一個獨立的名稱空間,它有屬於自己的Exchange、Queue以及的一些相關對象。不同Virtual Host之間的Exchange可以重名。Queue只能和相同Virtual Host中的Exchange進行綁定。


Exchange

每個Virtual Host包含0或多個Exchange。Exchange負責把Message轉發到Queue。每個Exchange可以有0或者多個Queue。每個Queue只能監聽1個Exchange。

Queue

Queue即消息隊列,負責存儲Exchange轉發過來的Message。注意,是Queue,所以Message是First-In-First-Out。


Binding

Binding指的是Exchange根據規則作出消息轉發決策的過程。Message到達Exchange,Exchange此時並不知道Message應該被轉發到哪些Queue,然後Exchange根據規則對Message進行Binding決策,Binding完成之後,Exchange根據Binding的結果將Message轉發到正確的Queues。


Routing Key

每個Message一般來說必須指定一個Routing Key,Exchange根據Message的Routing Key進行Binding,然後完成Message的轉發。


Binding Key

每個Queue一般來說必須指定一個Binding Key。 Binding的過程其實就是根據一定的規則判定Message的Routing Key是否與Queue的Binding Key匹配,如果匹配,則轉發Message到Queue。如果Message的Routing Key與多個Queue的Binding Key匹配,則所有匹配的Queue都會收到該Message。


Exchange Type

Exchange Type決定了Binding的匹配規則。AMQP支持三種Exchange Type:


  • Direct Exchange

  • Topic Exchange

  • Fanout Exchange


如果你熟悉網絡中單播、組播、廣播的概念的話,你可以簡單理解爲:Direct Exchange就是單播,Topic Exchange就是組播,Fanout Exchange就是廣播。


Connection

Publisher/Producer與Virutal Host 或 Subscriber/Consumer與Virtual Host之間的TCP連接。


Channel

通過多路複用技術,多個Channel共享同一個Connection。Message通過Channel在Publisher/Producer、Virutal Host、Subscriber/Consumer之間傳遞。


一圖勝千言

(圖中的Message流向箭頭畫的有點兒曲折,請湊合看。大笑)

SouthEast


AMQP協議堆棧


最後附上一張AMQP的協議堆棧圖,深入研究請參考官網AMQP規範

SouthEast

源自:http://blog.csdn.net/anyaas/article/details/17637141?ADUIN=369885910&ADSESSION=1388314375&ADTAG=CLIENT.QQ.5275_.0&ADPUBNO=26274

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章