介绍
概述
高级消息队列协议(AMQP)是一个开放的、业务消息系统的互联网协议(Internet Protocol for Business Messaging)。AMQP可以分成单独的层次。在最低的层次,我们定义了一个在网络上的两个进程之间传输消息的高效二进制点对点协议。其次,我们定义了一个关注标准编码的抽象消息格式。每一个兼容AMQP协议的进程必须能够使用这种标准消息格式来发送和接收消息。
原理和用例
业务消息系统的用户社区,基于他们建设和运营网络信息处理系统的经验,定义了AMQP的需求。AMQP工作组(AMQP Working Group)则根据本协议跟这些需求的满足程度来衡量AMQP的成功与否。这些需求概述如下。
普遍性
1.0 开放的互联网协议标准支持方便的(a)使用,(b)实现,和(c)扩展。
核心功能清晰明确,支持网络基础设施上的业务消息路由和投递,因此可以由基础设施提供业务消息处理而不需要专业的集成经验。
理解、使用、实现的门槛低。
1.0 可以通过实用的方式融合到现有的企业消息应用环境中。
安全可信
1.0 可以作为一个安全可信的、支持全局事务的网络基础设施。
l 作为业务消息的防篡改的证据。
l 支持独立于接收者的消息持久性。
l 并且消息投递对于技术失败来说是可恢复的。
1.0 支持传输任何有经济价值的事务的业务需求。
将来 接收者和发送者双方约定一致,不存在垃圾数据的注入。
精确性
1.0 明确的“消息队列和投递”(messagequeueing and delivery)的语义,包括:最多一次(at-most-once);最少一次(at-least-once);有且就有一次(once-and-only-once),即可靠性的。
1.0 明确的“消息顺序”(messageordering)的语义,描述了发送者可以预期接收者或队列管理者将要观察到什么。
1.0 明确的“可靠失败处理”(reliablefailure)的语义,所有的异常都是可以被管理的。
适用性
1.0 由于TCP作为网络通信技术特性中的一种,我们希望AMQP成为各种组织的一种流行的业务消息技术工具。并随着其使用的增加,收益(ROI)增加,成本(TCO)降低。
任意的AMQP客户端都可以通过TCP创建到任意AMQP代理的连接,并与之会话。
将来 任意的AMQP客户端都可以通过双方都支持的其他可替代的协议(比如SCTP,UDP/multicast等等)创建到任意AMQP代理的连接,并与之会话。
1.0 通过单个易管理的协议提供一组核心消息模式:异步定向消息,请求/响应,发布/订阅,储存/分发。
1.0 支持在业务边界内外辐射状的消息拓扑结构。
将来 通过制定代理间认证的明确协议,支持跨消息边界的中心到中心的消息传播。
交互性
1.0 多个稳定的互操作的代理,可以来自于完全独立的不同来源,包括设计、架构、代码和所有者。
1.0 任一代理的实现,在所有强制性消息交换和队列功能,包括明确的语义方面,都和规范一致。
1.0 实现都是可供任何人独立测试和验证的。
1.0 客户端与代理间的传输协议内核是稳定的,因此随着1.x版本的特性进化,代理不必升级:任意1.x版本的客户端可以与1.y版本的代理一起使用,如果y>=x.
将来代理与代理间的传输协议扩展是稳定的,因此随着1.x版本的特性进化,代理不必升级:如果两个代理的版本分别是1.x和1.y,它们可以使用1.x通信,如果x<y.
1.0 分层的架构,所以功能特性和网络传输能够被使用它们的不同社区独立的扩展,使得与其他系统的业务集成不需要AMQP工作组的协调。
易用性
1.0 二进制的传输协议,因此它是通用的、快速的、可嵌入的(最上层可以是XML)。也可以由包装系统提供管理特性,比如控制系统、中间件、电话等。
1.0 可扩展的:因此其可以作为一个高性能、可容错、可靠性的消息系统的基础设施,而且不需要其他的消息技术。
将来 同其他消息投递系统交互是可能的,足以使用管理标准管理消息系统来集成各种流行的业务操作。
将来 中介性的:支持路由和中继管理,流量管理,服务质量管理。
将来 去中心化的部署:本地独立的治理。
将来 全局寻址:标准化了跨任何网络范围的端到端的投递。
如何阅读标准
AMQP标准划分为不同的章节来定义标准的不同部分。你不妨根据您感兴趣的领域,从某一特定章节开始阅读,并使用其他章节作为参考。
第一章定义AMQP的类型系统
第二章定义AMQP的传输层
第三章定义AMQP的消息传递层
第四章定义AMQP的事务层
第五章定义AMQP的安全层