AMQP協定介紹
AMQP,即Advanced Message Queuing Protocol,進階消息隊列協定,是應用層協定的一個開放标準,為面向消息的中間件設計。
AMQP的主要特征是面向消息、隊列、路由(包括點對點和釋出/訂閱)、可靠性、安全。
AMQP在消息提供者和用戶端的行為進行了強制規定,使得不同賣商之間真正實作了互操作能力。
JMS是早期消息中間件進行标準化的一個嘗試,它僅僅是在API級進行了規範,離建立互操作能力還差很遠。
與JMS不同,AMQP是一個Wire級的協定,它描述了在網絡上傳輸的資料的格式,以位元組為流。是以任何遵守此資料格式的工具,其建立和解釋消息,都能與其他相容工具進行互操作。
AMQP規範的版本:
0-8 是2006年6月釋出
0-9 于2006年12月釋出
0-9-1 于2008年11月釋出
0-10 于2009年下半年釋出
1.0 draft (文檔還是草案)
AMQP的實作有:
1)OpenAMQ
AMQP的開源實作,用C語言編寫,運作于Linux、AIX、Solaris、Windows、OpenVMS。
2)Apache Qpid
Apache的開源項目,支援C++、Ruby、Java、JMS、Python和.NET。
3)Redhat Enterprise MRG
實作了AMQP的最新版本0-10,提供了豐富的特征集,比如完全管理、聯合、Active-Active叢集,有Web控制台,還有許多企業級特征,用戶端支援C++、Ruby、Java、JMS、Python和.NET。
4)RabbitMQ
一個獨立的開源實作,伺服器端用Erlang語言編寫,支援多種用戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支援AJAX。RabbitMQ釋出在Ubuntu、FreeBSD平台。
5)AMQP Infrastructure
Linux下,包括Broker、管理工具、Agent和用戶端。
6)?MQ
一個高性能的消息平台,在分布式消息網絡可作為相容AMQP的Broker節點,綁定了多種語言,包括Python、C、C++、Lisp、Ruby等。
7)Zyre
是一個Broker,實作了RestMS協定和AMQP協定,提供了RESTful HTTP通路網絡AMQP的能力。