AMQP 即Advanced Message Queuing Protocol(高级消息队列协议)
AMQP协议是具有现代特征的二进制协议。一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为*面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制
高级消息队列协议使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能。
AMQP 协议模型。
AMQP 协议模型
概念介绍:
Server:又称Broker。接受客户端连接,实现AMQP的服务器实体。
Connection:连接,应用程序与Broker的网络连接。
Channel:信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务,一个Connection可以创建多个channel。相当是传统的session概念,使用的操作都在channel上。
Message:消息。服务器和应用程序之间传送的数据,本质上就是一段数据,由Properties和Body组成。
Exchange:交换机。接收消息,根据路由键转发消息到绑定的队列。生产者通过Exchange和路由规则将数据发送到Queue。
Binding:Exchange和Queue之间的虚拟连接,binding中可以包含routing key
Routing key:路由规则, 一个虚拟地址,虚拟机可用它来确定如何路由一个特定消息,在Exchange和queue绑定的时候,需要设置该值。
Queue:也称为Message Queue,消息队列,保存消息并将它们转发给消费者
Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个
Virtual Host里面可以有若干个Exchange和Queue,可以用来隔离Exchange和Queue,同一个Virtual Host 里面不能有相同名称的Exchange或Queue 。不同的Virtual Host 里面可以有相同名称的Exchange或Queue 。但是权限控制的最小粒度是Virtual Host
常见AMQP协议实现的MQ:
RabbitMQ
http://www.rabbitmq.com/
Apache Qpid
http://qpid.apache.org/
OpenAMQ
http://www.openamq.org/
AMQP参考资料:
http://www.amqp.org/
http://www.amqp.org/resources/download
https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
Spring AMQP
http://projects.spring.io/spring-amqp/
https://github.com/spring-projects/spring-amqp
网友评论