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