RabbitMQ 的工作流程
RabbitMQ 是一个消息中间件,实现了生产者消费者模型,可以用来接收、存储、转发消息。
专有名词介绍
要了解 RabbitMQ 的工作流程,我们需要先了解下面几个关键词:
1、Producer
生产者,即向 RabbitMQ 发送消息。
2、Consumer
消费者,即接收 RabbitMQ 中的消息。
3、Broker
可以看作是 RabbitMQ 的服务器,用来接收、发送消息。
4、Connection
连接,是 Producer、Consumer 与 Broker 建立 的 TCP 连接,这个连接是建立消息传递的基础。
5、Channel
信道,是 Connection 的抽象,一个 Connection 可以有多个 Channel,消息的接收、发送都是基于 Channel。
使用 Channel 可以将多个消息的发送与接收集中到一个 TCP 连接上,可以减少连接的建立与关闭,节约了网络资源。
6、Queue
队列,用来存储消息;
一个 Queue 可以被多个消费者订阅,一个消费者也可以订阅多个 Queue。
7、Exchange
交换机,当消息到达 RabbitMQ 时,经过对应的交换机,将消息存储到对应的 Queue 中;
一个交换机可以对应多个 Queue。
8、Virtual host
虚拟主机,为消息队列提供了逻辑上的隔离机制;
一个 BrokerServer 中可以有多个 Virtual host,当多个用户使用一个 RabbitMQ 时,会划分出多个虚拟主机,每个用户在自己的虚拟主机中创建对应的 Exchange 和 Queue。
RabbitMQ 的工作流程
1、Producer 在与 RabbitMQ Broker 建立 TCP 连接之后,会开启一个 Channel;
2、Producer 将消息通过 Channel 发送给 RabbitMQ Broker;
3、Broker 接收到消息之后,就会根据 Producer 将消息通过其对应的 Exchange 存放至 Queue;
4、若没有对应的 Queue,就会依据 Producer 的配置,将消息传发给 Producer 或 丢弃;
5、Consumer 与 RabbitMQ 建立连接之后,就可以获取对应的 Queue 中存放的消息,之后进行消费。