RabbitMQ系列四 AMQP协议介绍

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 15,987评论 2 11
  • 来源 RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。支持消息的持久化、事务、拥塞控...
    jiangmo阅读 10,398评论 2 34
  • 前言 在微服务架构的系统中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有微服务实例都连接上来...
    Chandler_珏瑜阅读 6,607评论 2 39
  • “#本文参加‘青春’大赛,本人保证本文为本人原创,如有问题则与主办方无关,自愿放弃评优评奖资格 姓名:李杨 学...
    lydzh阅读 661评论 0 1