目录
一、基本概念
1. 生产者(Producer)
2. 消费者(Consumer)
3. 队列(Queue)
4. 交换器(Exchange)
5. 绑定(Binding)
6. 路由键(Routing Key)
7. 消息确认(ACK)
8. 持久化(Durability)
9. 虚拟主机(Virtual Host)
二、认识MQ控制台及基本操作
1、MQ系统预设的交换机:
2、创建交换机
3、创建队列
4、将交换机与队列绑定(路由)编辑
5、发送消息
6、查看队列中的消息编辑
三、交换机类型
1、Fanout交换机
2、Direct交换机
3、Topic交换机
四、数据隔离
1、添加新用户
2、查看用户列表
3、切换到新用户,并创建虚拟主机。
4、回交换机看看
大家好,今天给大家分享RabbitMQ。MQ呢可以看作一个中间者,我们给MQ发送一条消息,然后其他服务就可以从MQ获取到消息并执行相应的业务。这样的好处就是可以达到异步处理,生产消息的一方只需要把消息发送给MQ即可,无需再关注后续操作,可以继续执行自己的业务。
一、基本概念
下面一些交换机的概念后面会讲,比如路由键什么的如果第一次看不懂没关系
1. 生产者(Producer)
-
发送消息的应用,将消息发布到 RabbitMQ 的 交换器。
2. 消费者(Consumer)
-
接收消息的应用,从 队列 中订阅并处理消息。
3. 队列(Queue)
-
存储消息的缓冲区,消息会被暂存在队列中,直到被消费者处理。
-
特性:可声明为持久化(重启后保留)、独占(仅限当前连接)或自动删除(无消费者时删除)。
4. 交换器(Exchange)
-
接收生产者发送的消息,并根据规则(绑定、路由键)将消息路由到队列。
-
常用类型:
-
Direct:精确匹配路由键。
-
Fanout:广播到所有绑定队列。
-
Topic:基于通配符匹配路由键(如
logs.*
)。 -
Headers:通过消息头属性匹配(不常用)。
-
5. 绑定(Binding)
-
连接交换器和队列的规则,定义消息如何从交换器路由到队列。
6. 路由键(Routing Key)
-
生产者发送消息时指定的键,交换器根据此键决定消息路由到哪些队列。
7. 消息确认(ACK)
-
手动确认(Manual Acknowledgement):消费者处理完消息后需显式发送 ACK,RabbitMQ 才会从队列删除消息。
-
自动确认(Auto ACK):消息发送后立即删除,可能导致消息丢失(不推荐生产环境使用)。
8. 持久化(Durability)
-
队列持久化:声明队列时设置
durable=true
,重启后队列保留。 -
消息持久化:发送消息时设置
delivery_mode=2
,确保消息写入磁盘(需配合持久化队列生效)。
9. 虚拟主机(Virtual Host)
-
逻辑隔离单元,类似独立环境。不同虚拟主机的交换器、队列等资源互相隔离。
二、认识MQ控制台及基本操作
1、MQ系统预设的交换机:
2、创建交换机
3、创建队列
4、将交换机与队列绑定(路由)

完成:
5、发送消息
想交换机发送消息,交换机会根据它自己的类型,将消息路由发送到与他绑定的队列中
6、查看队列中的消息

三、交换机类型
1、Fanout交换机
-
作用:广播消息,将消息无条件发送到所有绑定的队列。
-
特点:
-
完全忽略路由键(Routing Key)。
-
每条消息会被复制到所有关联队列。
-
-
典型场景:
-
群发通知(如系统广播)。
-
日志分发到多个消费者。
-
事件驱动架构中的多服务同步处理。
-
一句话:无脑广播,一人发送,全员队列接收。
2、Direct交换机
-
作用:精确匹配路由键,将消息发送到与路由键完全一致的绑定队列。
-
特点:
-
消息的路由键(Routing Key)必须与队列的绑定键(Binding Key)完全相同。
-
一对一或多对一投递(如多个队列绑定相同键时,消息会复制到这些队列)。
-
-
典型场景:
-
任务分发(如按任务类型路由到特定队列)。
-
订单系统中按订单状态分类处理。
-
需要严格匹配规则的场景(如支付成功/失败消息分离)。
-
一句话:按键精准投递,一对一或多对一,严格匹配。
示例:在控制台中创建交换机,并设置绑定关系
3、Topic交换机
-
作用:基于通配符模式匹配路由键,实现灵活的多条件路由。
-
特点:
-
路由键支持通配符:
-
*
:匹配一个单词(如order.*
匹配order.paid
,不匹配order.paid.email
)。 -
#
:匹配零或多个单词(如order.#
匹配order
、order.paid
、order.paid.email
)。
-
-
绑定键格式为用
.
分隔的多级路径(如user.notification.email
)。
-
-
典型场景:
-
多维度事件分类(如日志分级
error.*
、warning.*
)。 -
动态路由(如根据用户行为类型+地区分发消息
action.purchase.us
)。 -
订单状态多级处理(如
order.*.failed
匹配所有失败类型)。
-
一句话:通配符匹配路由键,按层级灵活分发。
四、数据隔离
给不同的项目创建不同的用户,然后不同的用户使用不同的虚拟主机,这样就达成了数据的隔离。
1、添加新用户
2、查看用户列表
3、切换到新用户,并创建虚拟主机。
(注意:创建的虚拟主机直接就属于当前登录用户的)
查看虚拟主机: