一、什么是AMQP?
AMQP(Advanced Message Queuing Protocol)是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议。是应用层协议的一个开放标准,为面向消息的中间件设计。
AMQP作为一个消息,其实现的产品有RabbitMQ,类似的消息协议还有JMS(Java Message Service)java消息服务 ,JMS的产品实现有ActiveMQ。
二、AMQP协议模型?
下面图中展示了消息message
的流转过程。
消息生产者(Publisher application)发出消息到达消息中间件服务(Server)上的某个虚拟主机(Virtual host)上的某交换机(Exchange)中。然后该交换机会与一个消息队列(Message Queue)进行绑定。而我们的消息消费者(Consumer application)直接从消息队列中获取到消息然后去消费就可以了。
三、AMQP核心概念?
名词 | 描述 |
---|---|
Server | 也叫做Broker,接收客户端的连接,实现AMQP实体服务 |
Channel | 网络信道,几乎所有的操作都在Channel中进行。Channel是消息读写的通道。客户端可以建立多个Channel,每个Channel代表一个会话 |
Connection | 连接,应用程序与Server之间的网络连接 |
Message | 消息,服务器与应用程序之间传递的数据,由properties和body组成。properties可以对消息进行修饰,如消息的优先级,延迟等高级特性;body就是消息的内容 |
Virtual host | 虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual host里面可以有多个Exchange 和 Queue,同一个Virtual host中不能有同名的Exchange 和Queue |
Exchange | 交换机,接收消息,根据路由键转发消息到 |
Binding | 绑定,Exchange和Queue之间进行虚拟连接,Binding中可以包含路由键(routing key) |
Routing key | 一个路由规则,虚拟机可以用它来确定如何路由一个消息 |
Message Queue | 消息队列,保存消息并转发给消费者 |
四、消息交换体系结构
AMQP协议可以支持多种消息交换的体系结构:
- 存储转发(多个消息发送者,单个消息接收者)
- 分布式事务(多个消息发送者,多个消息接收者)
- 发布订阅(多个消息发送者,多个消息接收者)
- 基于内容的路由(多个消息发送者,多个消息接收者)
- 文件传输队列(多个消息发送者,多个消息接收者)
- 点对点连接(单个消息发送者,单个消息接收者)