04年,AMQP開放標準被開發
06年,AMQP規範被髮布
基本概念
Message:與平臺無相關的數據。
Publisher:向交換器發佈消息的客戶端應用程序
Exchange:用來接收消息生產者所發送的消息並把這些消息路由給服務器中的隊列
Binding:用於消息隊列和交換器之間的關聯
VirtualHost:是消息隊列以及相關對象的集合,是共享同一個身份驗證和加密環境的獨立服務器。
Broker(消息代理):表示消息隊列服務器實體,接受客戶端鏈接,實現AMQP消息隊列和路由功能的過程。
Routing Key(路由規則):虛擬機用它來肯定如何路由一個特定的消息。
Queue:用來保存消息的消息隊列。
Connection:略
Channel:略
Consumer:略
消息的生命週期:
描述消息被生產者生產直到被消費者消費過程
Q1:若是消息在Exchange不能被路由怎麼辦?
A1:交換器會將消息丟棄或者將其返回給生產者
Q1:消息在消息隊列傳遞給消費者時不成功?
A1:消息隊列存儲消息或者持久化到內盤或者內存中,等待消費者準備好;若是沒有消費者,消息隊列能夠經過AMQP將消息返回給生產者。
交換器的生命週期
每臺AMQP服務器都預先建立了許多交換器實例,他們在服務器啓動時就存在而且不能被銷燬。能夠選擇本身建立交換器,並在完成工做後銷燬。
隊列的生命週期
持久化消息隊列可被多個消費者共享,無論是否有消費者接受,他們均可以獨立存在。
臨時消息隊列對某個消費者是私有的,只能綁定到此消費者,當消費者斷開鏈接時,該消息隊列被刪除。
功能命令
這裏說的功能命令是指協議對外提供一套可操做的命令集合,應用程序正是基於這些命令來實現本身的業務功能。
AMQP協議文本是分層描述的,在不一樣主版本中劃分的層次是有必定的區別,在0-9版本中分紅FunctionLayer(功能層)和TransportLayer(傳輸層)兩層,而在0-10版本中分爲ModeLayer(模型層)、SessionLayer(會話層)、TransportLayer(傳輸層)三層,分層的目的是在不改變協議對外提供的功能的前提下替換各層的實現,而又不影響該層與其餘層的交互。在AMQP 0-9版本中,功能命令包括Connection、Channel、Exchange、Queue、Basic和Transaction幾大類,每一個命令按照類+方法+參數的 方式來組織描述。
消息數據格式
在消息生命週期中,描述了一條消息隊列服務器中流轉的過程,爲了實現這些處理過程,全部的消息必須有特定的格式來支持,這部分是在傳輸層中定義的。
消息信道複用
數據可見性保證
內容排序保證
錯誤處理