
_START_ARTICLE_
高级消息队列协议
_START_PARAGRAPH_
高级消息队列协议即Advanced Message Queuing Protocol（AMQP）是一个用于统一面向消息中间件实现的一套标准协议，其设计目标是对于消息的排序、路由（包括点对点和订阅-发布）、保持可靠性、保证安全性。高级消息队列协议保证了由不同提供商发行的客户端之间的互操作性。与先前的中间件标准（如Java消息服务），在特定的API接口层面和实现行为进行了统一不同，高级消息队列协议关注于各种消息如何作为字节流进行传递。因此，使用了符合协议实现的任意应用程序之间可以保持对消息的创建、传递。
_START_SECTION_
历史
_START_PARAGRAPH_
高级消息队列协议最早在2003年由John O'Hara在摩根大通提出。初始设计方案在2004年中至2006年中由摩根大通发布，由iMatix公司编写协议文档和一个C语言实现。2005年摩根大通推动了包括思科系统、红帽公司、iMatix、IONA技术等公司组成了一个工作组。摩根大通和红帽公司合作开发了Apache Qpid，该客户端最初由Java编写，后转向C++；Rabbit技术公司独立用Erlang开发了RabbitMQ。_NEWLINE_早先版本的协议包括版本0-8，2006年6月发布；版本0-9，2006年12月发布；版本0-9-1，2008年11月发布。这些版本与后来的1.0系列有很大的不同。_NEWLINE_2011年8月，高级消息队列协议工作组公布其改组方案，作为OASIS成员运作。高级消息队列协议1.0版本在2011年10月30日发表。该版本在2014年四月成为ISO/IEC国际标准。
_START_SECTION_
类型系统
_START_PARAGRAPH_
协议制定了一种自描述的编码方案，以用于保证在许多广泛使用的类型之前的互操作性。其允许有类型的数据使用用额外的信息进行注释；如一个字符串可以注释成为一个URL地址。类似的，一种用于保存‘姓名’和‘地址’的键值对映射表格可以注释用来保存另外一种类型。