AMQP协议简介
一、消息开发
传统的应用开发一般都采用的是快速的 “请求-响应” 处理模式,即当用户向服务端发出了一个请求之后,那么服务端会立即对该请求进行处理,如图1所示。但是当请求并发量较大时,这样的处理模式就有可能造成服务端程序的崩溃,那么此时的做法,往往是客户端和服务端之间追加一个数据队列,用户的每一次请求都在队列中一次排列,而后服务端依照请求的顺序进行业务处理,如图2所示。
- 而如果此时引入了消息组件,那么就相当于提供了一个操作的缓冲区(队列是一种FIFO的设计结构,那么根据队列的形式实现了分布式的队列开发,而这就是消息组件的核心设计思想)。
为了解决消息组件的传输性能以及消息服务的标准化的问题,所以提供了AMQP的处理协议,只要基于此协议的开发的消息组件,可以直接在任何的编程语言上实现。
二、AMQP
AMQP(Advanced Message Queuing Protocol、高级消息队列协议)提供统一消息服务的应用层标准协议,该协议属于一种二进制协议,具有多通道、异步、安全、语言中立以及高效等特点。不管使用何种开发语言,何种实现组件,只要基于此协议的客户端与消息中间件都可以实现消息的传递,从整体来讲AMQP协议可以分为三层
- 所有的消息组件的核心之中,就是生产者和消费者,生产者负责生产数据,消费者负责接收数据,在实际的开发之中,生产者就是业务的调用者(需要传递的业务数据),而消费者就是业务的终端,每一次获取到了生产者发送来的数据之后,通过这些数据实现最终业务层的逻辑处理。
- 不同的消息组件仅仅是在中间消息处理的地方有不同的逻辑形式,以Rabbitmq为例,包含一下几个核心组件:
- Exchange(交换器):实现消息生产者的消息接收,而后按照一定的规则将信息发送到指定的消息队列中;
- Queue(消息队列):实现消息的存储,直到改消息已经被安全的投递给了消息消费者;
- Bindings(绑定):定义了Exchange与Queue直接的关系,并提供消息路由规则的配置。