RabbitMQ工作流程

MQ定义

消息队列,强调消息和队列。

消息:生产者完成某一项业务,发送消息给交换器,代表,我完成了这个功能,接下来,该干什么,消费者自己来认领这个消息,然后消费。

队列:交换器将消息分发给各个消费者时,根据绑定的key,到自己的队列,然后按照先进先出原则由消费者进行消费。

工作原理

使用消息队列,重点在于合理的让消费者消费,消费者通过监听器,时刻监听着路由过来的消息,然后执行相应的操作。

工作流程

RabbitMQ工作流程
工作流程分为两个部分,一个是消息投递,一个是消费消息。

  • 消息投递

1、生产者和broker建立TCP连接并搭建通道。

2、生产者通过通道将消息发送给broker中的交换机。

3、交换机将消息根据需求投递到对应的队列。

  • 消费消息
    1、消费者和broker建立TCP连接并搭建通道。

2、消费者监听对应的队列。

3、队列中有消息时,消费者进行消费。
···················································································
已知
消息队列的开始是建立TCP连接,虚拟连接建立在TCP连接之上,数据流动都是在channels中进行的。
问:
我们完全可以使用TCP连接完成消息传递的功能,为什么不直接使用TCP连接,而要额外使用channels通道?
答:
因为TCP连接是有代价的,频繁的建立和关闭对系统性能有很大的影响,而且TCP的连接数有一定的限制。
而channels通道没有这种问题,生产者和消费者可以并发使用多个channels进行发布和订阅,一个TCP连接上,可以挂着很多通道。