非底層操作系統軟件、非業務應用軟件、不是直接給最終用戶使用的,不能直接給客戶帶來價值的軟件統稱爲中間件。消息中間件關注於數據的發送和接收,利用高效、可靠的異步消息傳遞機制集成分佈式系統。消息隊列可用於解決解耦、流量消峯、日誌收集、事務最終一致性等問題。
消息協議有AMQP、MQTT、STOMP、XMPP等。其中AMQP協議包含以下信息。
AMQP協議
Exchange(交換器):用來接收消息生產者所發送的消息並將這些消息路由給服務器中的隊列
Message(消息):消息服務所處理數據的原子單元。消息可以攜帶內容,從格式上看,消息包含一個內容頭、一組屬性和一個內容體。
Publisher(消息生產者):一個向交換器發佈消息的客戶端
Virtual Host(虛擬主機):它是消息隊列以及相關對象的集合,是共享同一個身份驗證和加密環境的獨立服務器域。每個虛擬主機本質上是一個mini版的消息服務器,擁有自己的隊列、交換器、綁定和權限機制。
Broker(消息代理):表示消息隊列服務器實體,接受客戶端連接,實現AMQP消息隊列和路由功能的過程。
Routing Key(路由規則):虛擬機可用它來確定如何路由到一個特定消息。
Queue(消息隊列):用來保存消息直接發送給消費者。
Connection(連接):可以理解爲客戶端和消息隊列服務器之間的一個TCP連接。
Channel(信道):信道是一條獨立的雙向數據流通道,它是建立在真實的TCP連接內的虛擬連接,AMQP命令都是通過信道發出去的,不管發佈消息、訂閱隊列還是接受消息,它們都通過信道完成。
Consumer(消費者):表示一個消息隊列中取得消息的客戶端應用程序。
Binding(綁定):用於消息隊列和交換器之間的關聯。一個綁定就是基於路由鍵將交換器和消息隊列連接起來的路由規則,所以可以將交換器理解成一個由綁定構成的路由表。