基本概念
生产者:消息投递方。
消费者:消息接收(消费)方。
Broker:消息中间件的服务节点。
Queue 队列:用于存储消息。
Exchange 交换器:实际情况是生产者将消息发送到交换器,由交换器将消息路由到一个或者多个队列。
Binding:绑定,通过绑定将交换器与队列关联起来。在绑定时一般会执行一个绑定键(BindingKey)
RabbitMQ运转流程
1 生产者连接到RabbitMQ(以下简称MQ)Broker,建立一个连接(Connection),开启一个信道(channel)。
2 生产者声明一个交换器,并设置相关属性,比如交换器类型,是否支持持久化等。
3 生产者生命一个队列并设置相关属性,比如是否排他,是否持久化,是否自动删除等。
4 生产者通过路由键将交换器和队列绑定起来。
5 生产者发送消息值MQ Broker 其中包含路由键、交换器等信息。
6 相应的交换器根据接收到的路由键查找相匹配的队列。
7 如果找到,则将从生产者发送过来的消息存入相应的队列中。
8 如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者。
9 关闭信道。
10 关闭连接。
消费者接收消息过程:
1 消费者连接到MQ Broker,建立一个连接,开启一个信道。
2 消费者想MQ Broker 请求消费相应队列中的消息,可能会设置相应的回调函数,以及一些准备工作。
3 等待MQ Broker 回应并投递相应队列中的消息。消费者接收消息。
4 消费者确认(ack)接收到的消息。
5 MQ从队列中删除相应已经被确认的消息。
6 关闭信道。