MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。 RabbitMQ由Erlang语言开发,Erlang语言用于并发及分布式系统的开发,在电信领域应用广泛,OTP(Open Telecom Platform)作为Erlang语言的一部分,包含了很多基于Erlang开发的中间件及工具库,安装RabbitMQ需要安装Erlang/OTP,并保持版本匹配。
开发中消息队列通常有如下应用场景: 1、任务异步处理。 将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。 2、应用程序解耦合 MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。 下图是RabbitMQ的基本结构:  组成部分说明如下: Broker :消息队列服务进程,此进程包括两个部分:Exchange和Queue。 Exchange :消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。 Queue :消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。 Producer :消息生产者,即生产方客户端,生产方客户端将消息发送到MQ。 Consumer :消息消费者,即消费方客户端,接收MQ转发的消息。
消息发布接收流程: -----发送消息----- 1、生产者和Broker建立TCP连接。 2、生产者和Broker建立通道。 3、生产者通过通道消息发送给Broker,由Exchange将消息进行转发。 4、Exchange将消息转发到指定的Queue(队列) ----接收消息----- 1、消费者和Broker建立TCP连接 2、消费者和Broker建立通道 3、消费者监听指定的Queue(队列) 4、当有消息到达Queue时Broker默认将消息推送给消费者。 5、消费者接收到消息。
|