【消息队列】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、回交换机看看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/905474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp -- 验证码倒计时按钮组件

jia-countdown-verify 验证码倒计时按钮组件 一个用于发送短信验证码的倒计时按钮组件,支持自定义样式、倒计时时间和文本内容。适用于各种需要验证码功能的表单场景。 代码已经 发布到插件市场 可以自行下载 下载地址 特性 支持自定义按钮样式(颜色、…

知识图谱重构电商搜索:下一代AI搜索引擎的底层逻辑

1. 搜索引擎的进化论 从雅虎目录式搜索到Google的PageRank算法,搜索引擎经历了三次技术跃迁。而AI搜索引擎正在掀起第四次革命:在电商场景中,传统的「关键词匹配」已无法满足个性化购物需求,MOE搜索等新一代架构开始融合知识图谱…

深度学习 自然语言处理(RNN) day_02

1. 感知机与神经网络 1.1 感知机 生物神经元: 1.1.1 感知机的概念 感知机(Perceptron),又称神经元(Neuron,对生物神经元进行了模仿)是神 经网络(深度学习)的起源算法&am…

PYTHON训练营DAY25

BUG与报错 一、try else try:# 可能会引发异常的代码 except ExceptionType: # 最好指定具体的异常类型,例如 ZeroDivisionError, FileNotFoundError# 当 try 块中发生 ExceptionType 类型的异常时执行的代码 except: # 不推荐:捕获所有类型的异常&…

LU分解求解线性方程组

L U LU LU分解 前言 L U LU LU分解 由以下定理得以保证: 设 A \boldsymbol{A} A为 n n n阶方阵,若其各界阶顺序主子式都不为 0 0 0,那么它可以 被唯一的上下三角矩阵积分解。 步骤 确定各矩阵形式 A L U \mathbf{A}\mathbf{LU} ALU ( a 1…

Linux——数据库备份与恢复

一,Mysql数据库备份概述 1,数据库备份的重要性 数据灾难恢复:数据库可能会因为各种原因出现故障,如硬件故障、软件错误、误操作、病毒攻击、自然灾害等。这些情况都可能导致数据丢失或损坏。如果有定期的备份,就可以…

SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践

SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践 医疗设备的高可靠性、安全性及严格合规性要求,使其故障维修决策具有显著的特殊性。支持向量机(SVM)凭借小样本学习、非线性建模及高精度分类能力,可有效解决…

WEB安全--Java安全--CC1利用链

一、梳理基本逻辑 WEB后端JVM通过readObject()的反序列化方式接收用户输入的数据 用户编写恶意代码并将其序列化为原始数据流 WEB后端JVM接收到序列化后恶意的原始数据并进行反序列化 当调用: ObjectInputStream.readObject() JVM 内部逻辑: → 反…

FlashInfer - 介绍 LLM服务加速库 地基的一块石头

FlashInfer - 介绍 LLM服务加速库 地基的一块石头 flyfish 大型语言模型服务中的注意力机制 大型语言模型服务(LLM Serving)迅速成为重要的工作负载。Transformer中的算子效率——尤其是矩阵乘法(GEMM)、自注意力(S…

反向操作:如何用AI检测工具优化自己的论文“人味”?

大家好,这里是论文写手的一线自救指南😤 在AIGC横行的今天,谁还没偷偷用过AI写几段论文内容?但问题来了:学校越来越会“识AI”了! 有的学校甚至不看重复率,只盯AIGC率报告,一句“AI…

关于单片机的基础知识(一)

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于单片机基础知识的相关内容&#xf…

AWS技术助力企业满足GDPR合规要求

GDPR(通用数据保护条例)作为欧盟严格的数据保护法规,给许多企业带来了合规挑战。本文将探讨如何利用AWS(亚马逊云服务)的相关技术来满足GDPR的核心要求,帮助企业实现数据保护合规。 一、GDPR核心要求概览 GDPR的主要目标是保护欧盟公民的个人数据和隐私权。其核心要求包括: 数…

FFplay 音视频同步机制解析:以音频为基准的时间校准与动态帧调整策略

1.⾳视频同步基础 1.2 简介 看视频时,要是声音和画面不同步,体验会大打折扣。之所以会出现这种情况,和音视频数据的处理过程密切相关。音频和视频的输出不在同一个线程,就像两个工人在不同车间工作,而且不一定会同时…

车载网关--- 职责边界划分与功能解耦设计

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

最优化方法Python计算:有约束优化应用——近似线性可分问题支持向量机

二分问题的数据集 { ( x i , y i ) } \{(\boldsymbol{x}_i,y_i)\} {(xi​,yi​)}, i 1 , 2 , ⋯ , m i1,2,\cdots,m i1,2,⋯,m中,特征数据 { x i } \{\boldsymbol{x}_i\} {xi​}未必能被一块超平面按其标签值 y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi​∈…

aardio - 将文本生成CSS格式显示

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…

数字IC后端设计实现 | 如何自动删除Innovus 中冗余的hold buffer?

我们都知道在postCTS阶段做optDesign时序优化时需要进行hold violation的fixing。所以这个过程势必要通过插hold buffer来解决hold violation。这类hold buffer的名字带有"PHC"的关键词。 select_obj [dbGet top.insts.name PHC] llength [dbGet top.insts.name PH…

c# 倒序方法

在C#中&#xff0c;有几种方法可以对List进行倒序排列&#xff1a; 1. 使用List的Reverse()方法&#xff08;原地反转&#xff09; List<int> numbers new List<int> { 1, 2, 3, 4, 5 };numbers.Reverse(); // 直接修改原列表// 结果&#xff1a;5, 4, 3, 2, 1 …

【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权

【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权 文章目录 【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权[toc]一&#xff1a;Kerberos 委派攻击原理之 S4U2利用1.1原理1.2两种扩展协议**S4U2Self (Service for User to Self)****S4U2Proxy (Service for User to Proxy)*…

AD 间距规则与布线规则

1. 打开在线规则检查 2. 间距规则 一般来说最小间距设为6mil 注意&#xff1a; AD22 也提供类似低版本那样的、多个间距规则叠加的方法&#xff0c;通过选择第一个适配对象和第二个适配对象来筛选对象和范围。 ① Where The First Object Matches &#xff1a;选择规则第一个…