当前位置: 首页 > news >正文

【消息队列】RabbitMQ基本认识

目录

一、基本概念

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.# 匹配 orderorder.paidorder.paid.email)。

    • 绑定键格式为用.分隔的多级路径(如 user.notification.email)。

  • 典型场景

    • 多维度事件分类(如日志分级 error.*warning.*)。

    • 动态路由(如根据用户行为类型+地区分发消息 action.purchase.us)。

    • 订单状态多级处理(如 order.*.failed 匹配所有失败类型)。

一句话通配符匹配路由键,按层级灵活分发。



四、数据隔离

给不同的项目创建不同的用户,然后不同的用户使用不同的虚拟主机,这样就达成了数据的隔离。

1、添加新用户


2、查看用户列表


3、切换到新用户,并创建虚拟主机。

(注意:创建的虚拟主机直接就属于当前登录用户的)

查看虚拟主机:


4、回交换机看看

相关文章:

  • Qml自定义组件之车辆风扇展示
  • TypeScript装饰器:从入门到精通
  • PyTorch中mean(dim=1)的深度解析
  • k8s 中使用 Service 访问时NetworkPolicy不生效问题排查
  • ubuntu24.04上安装NVIDIA driver+CUDA+cuDNN+Anaconda+Pytorch
  • 计算机视觉最不卷的方向:三维重建学习路线梳理
  • 分布式2(Zookeeper )
  • ubuntu 22.04 wifi网卡配置地址上网
  • OpenHarmony轻量系统--BearPi-Nano开发板网络程序测试
  • 常见排序算法及其java实现
  • Redis缓存穿透、雪崩、击穿的解决方案?
  • 基于OpenCV中的图像拼接方法详解
  • Python----神经网络(《Searching for MobileNetV3》论文概括和MobileNetV3网络)
  • 前端安全:XSS、CSRF 防御与最佳实践
  • 【漫话机器学习系列】259.神经网络参数的初始化(Initialization Of Neural Network Parameters)
  • AI与机器学习深度集成:从设备端能力爆发到开发工具智能化
  • C++笔记-AVL树(包括单旋和双旋等)
  • 比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述
  • 第29节:现代CNN架构-Inception系列模型
  • 深度学习中的查全率与查准率:如何实现有效权衡
  • 30平米的无障碍酒吧里,我们将偏见折叠又摊开
  • 将人工智能送上太空,我国太空计算卫星星座成功发射
  • 中国海警舰艇编队5月14日在我钓鱼岛领海巡航
  • 人民日报评外卖平台被约谈:合法规范经营,公平有序竞争
  • 学习教育期间违规吃喝,李献林、叶金广等人被通报
  • 习近平同巴西总统卢拉共同会见记者