Rabbit MQ 高频面试题【刷题系列】
文章目录
- 一、公司生产环境用的什么消息中间件?
- 二、Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优缺点?
- 三、解耦、异步、削峰是什么?
- 四、消息队列有什么缺点?
- 五、RabbitMQ一般用在什么场景?
- 六、简单说RabbitMQ有哪些角色?
- 七、RabbitMQ有几种工作模式?
- 八、如何保证RabbitMQ消息的顺序性?
- 九、消息怎么路由?
- 十、如何保证消息不被重复消费?
- 十一、如何确保消息接收方消费了消息?
- 十二、如何保证RabbitMQ消息的可靠传输?
- 十三、为什么不应该对所有的message都使用持久化机制?
- 十四、如何保证RabbitMQ高可用的?
- 十五、如何解决消息队列的延时以及过期失效问题?
- 十六、RabbitMQ中消息可能有的几种状态?
- 十七、什么是死信队列?
- 十八、导致的死信的几种原因?

一、公司生产环境用的什么消息中间件?
解答:公司生产环境使用的消息中间件是 RabbitMQ ,它是一个开源的消息代理软件,支持多种消息传递协议,具有高可用性、可扩展性和灵活的路由能力。
二、Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优缺点?
解答:
- ActiveMQ:优点是高并发、高吞吐、性能高,有完善的后台管理界面;缺点是社区活跃度不高,未经大规模吞吐量场景验证。
- RabbitMQ:优点是开源社区活跃,迭代频繁,适合互联网中小公司;缺点是基于Erlang开发,源码分析和定制较难。
- RocketMQ:优点是性能卓越,支持分布式事务,适合互联网公司大规模使用;缺点是社区可能存在不稳定风险。
- Kafka:优点是专为高吞吐量设计,适合大数据领域;缺点是功能较少,主要用于日志采集和实时计算场景。
三、解耦、异步、削峰是什么?
解答:
- 解耦:系统间通过消息队列通信,降低系统间的耦合度,提高系统的灵活性和可维护性。
- 异步:通过消息队列实现请求的异步处理,提高系统响应速度和吞吐量。
- 削峰:在高流量时段,使用消息队列缓存请求,平滑流量高峰,保护系统稳定性。
四、消息队列有什么缺点?
解答:消息队列的缺点包括:
- 系统可用性降低:消息队列故障可能导致整个系统受影响。
- 系统复杂度提高:需要处理消息一致性、避免重复消费等问题。
- 一致性问题:在分布式系统中,消息队列可能导致数据不一致性问题。
五、RabbitMQ一般用在什么场景?
解答:RabbitMQ 适用于需要高可靠性、灵活路由和多种消息模式的场景,如:
- 服务间异步通信。
- 顺序消费。
- 定时任务。
- 请求削峰。
六、简单说RabbitMQ有哪些角色?
解答:RabbitMQ 中的主要角色包括:
- Broker:消息队列服务器实体。
- Exchange:消息交换机,负责消息路由。
- Queue:消息队列载体,存储消息。
- Binding:绑定,连接
Exchange和Queue。 - Routing Key:路由关键字,用于消息路由。
- VHost:虚拟Broker,提供权限隔离。
- Producer:消息生产者。
- Consumer:消息消费者。
七、RabbitMQ有几种工作模式?
解答:RabbitMQ 有以下几种工作模式:
- Simple模式:最简单的消息收发模式。
- Work模式:多个消费者竞争同一队列中的消息。
- Publish/Subscribe模式:发布订阅模式,消息分发到所有订阅的队列。
- Routing模式:路由模式,根据路由键将消息发送到特定队列。
- Topic模式:主题模式,使用通配符进行模糊匹配消息路由。
八、如何保证RabbitMQ消息的顺序性?
解答:保证 RabbitMQ 消息顺序性的方法包括:
- 使用单个消费者监听单个队列。
- 将相关业务数据发送到同一个队列中。
- 在消费者内部实现有序处理逻辑。
九、消息怎么路由?
解答:消息路由通过 Exchange 完成,生产者将消息发送到 Exchange,Exchange 根据路由键将消息路由到一个或多个绑定的队列中。
十、如何保证消息不被重复消费?
解答:防止消息重复消费的方法包括:
- 使用消息的唯一ID进行去重。
- 利用
RabbitMQ的确认机制(ACK),确保消息被正确处理后才从队列中删除。 - 通过数据库或缓存(如
Redis)记录已处理消息的状态。
十一、如何确保消息接收方消费了消息?
解答:
确保消息被消费的方法是使用 RabbitMQ 的确认机制。消费者在处理完消息后发送确认回执给 RabbitMQ ,RabbitMQ 收到确认后才从队列中移除消息。
十二、如何保证RabbitMQ消息的可靠传输?
解答:
保证消息可靠传输的方法包括:
- 使用持久化消息和持久化队列。
- 开启发送方确认模式(
Confirm Mode)。 - 使用事务或发布确认。
- 在集群模式下使用镜像队列。
十三、为什么不应该对所有的message都使用持久化机制?
解答:
对所有消息使用持久化机制可能导致性能下降,因为磁盘 I/O 比内存操作慢。此外,持久化机制在某些情况下可能引起数据不一致问题,如集群节点故障时的消息丢失。
十四、如何保证RabbitMQ高可用的?
解答:
保证 RabbitMQ 高可用的方法包括:
- 使用镜像集群模式,消息和队列元数据在多个节点上同步。
- 合理配置
RabbitMQ的策略,如镜像队列同步策略。 - 监控和管理
RabbitMQ集群状态,及时发现并处理问题。
十五、如何解决消息队列的延时以及过期失效问题?
解答:
解决消息队列延时和过期失效问题的方法包括:
- 设置合理的
TTL(Time-To-Live)值,避免消息过期。 - 在消息积压时,临时增加消费者数量或资源,加快消息处理速度。
- 对于丢失的消息,通过数据重导或补偿机制恢复。
十六、RabbitMQ中消息可能有的几种状态?
解答:
abbitMQ中消息可能的状态包括:
- 已发送(Sent):消息已发送到
Exchange。 - 已确认(Confirmed):消息已被消费者确认。
- 已丢弃(Discarded):消息被消费者拒绝并不再重新入队。
- 已死信(Dead Letter):消息成为死信,可能因为
TTL过期或被拒绝。
十七、什么是死信队列?
解答:
死信队列是用于存储死信消息的队列。死信是指无法被正常消费的消息,如TTL过期、被拒绝且不重新入队的消息。
十八、导致的死信的几种原因?
解答:导致消息成为死信的原因包括:
- 消息TTL过期。
- 消息被消费者拒绝并且设置requeue=false。
- 队列达到最大长度,无法再添加新消息。
相关文章:
Rabbit MQ 高频面试题【刷题系列】
文章目录 一、公司生产环境用的什么消息中间件?二、Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优缺点?三、解耦、异步、削峰是什么?四、消息队列有什么缺点?五、RabbitMQ一般用在什么场景?六、简单说RabbitMQ有哪些角…...
ES6 特性全面解析与应用实践
1、let let 关键字用来声明变量,使用let 声明的变量有几个特点: 1) 不允许重复声明 2) 块儿级作用域 3) 不存在变量提升 4) 不影响作用域链 5) 暂时性死区 6)不与顶级对象挂钩 在代码块内,使用let命令声明变量之前&#x…...
有关数据库表的冗余字段
有关数据库表的冗余字段 之前看一个开发人员的技术研讨视频,提到了一个数据库表设计中的表拆分字段冗余问题,就是一张表做纵向分表,拆分为a和b以做冷热数据分离存储,但是会有一种情况就是相同的字段值在a,b表中重复出现…...
知识图谱补全KGC
目录 基础知识知识图谱补全概念性能指标 一、翻译模型的知识图谱补全1.TransE2.TransH3.RotatE 二、张量分解的知识补全1.RESCAL2.ComplEx 三、神经网络的知识图谱补全1.卷积神经网络CNN(一般用于二维图像处理)ConvE 2.循环神经网络RNN3.图神经网络GNN1&…...
独立开发者的内容营销教程
内容营销对于独立开发者来说,是一种低成本、高效的方式来推广产品、建立品牌影响力和吸引潜在用户。通过分享有价值、相关性强的内容,您可以吸引用户的注意力,增强用户黏性,并最终将他们转化为忠实用户或客户。以下是详细的独立开…...
Mysql——约束与多表查询
一、约束 1.1定义 约束是对表中的数据进行限制的一套规则,用于防止用户向数据库中输入无效数据。它可以保证表中的数据满足特定业务规则和逻辑,从而维护数据的准确性和可靠性。 1.2作用 数据完整性 :约束可以确保数据在插入、更新或删除时符…...
DockerでOracle Database 23ai FreeをセットアップしMAX_STRING_SIZEを拡張する手順
DockerでOracle Database 23c FreeをセットアップしMAX_STRING_SIZEを拡張する手順 はじめに環境準備ディレクトリ作成Dockerコンテナ起動 データベース設定変更コンテナ内でSQL*Plus起動PDB操作と文字列サイズ拡張設定検証 管理者ユーザー作成注意事項まとめ はじめに Oracle…...
Unity 运用正则表达式保留字符串中的中文英文字母和数字
正则表达 正则表达式 – 语法 | 菜鸟教程 Regex 类 (System.Text.RegularExpressions) | Microsoft Learn 保留字符串中的中英数 中英数的正则表达。 patten "[\u4e00-\u9fa5A-Za-z0-9]"; 使用Regex 类匹配正则并保留。 matches Regex.Matches(str, patten)…...
vue el-table-column 单元表格的 省略号 实现
要对 el-table-column 的某一列中的每个单元格值进行处理,使其在文本内容超出指定宽度时显示省略号(…),可以通过以下方法实现: 使用 scoped slots:利用 Element UI 提供的 scoped slots 自定义单元格内容…...
企业微信里可以使用的企业内刊制作工具,FLBOOK
如何让员工及时了解公司动态、行业资讯、学习专业知识,并有效沉淀企业文化?一份高质量的企业内刊是不可或缺的。现在让我来教你该怎么制作企业内刊吧 1.登录与上传 访问FLBOOK官网,注册账号后上传排版好的文档 2.选择模板 FLBOOK提供了丰富的…...
【数据挖掘】Pandas
Pandas 是 Python 进行 数据挖掘 和 数据分析 的核心库之一,提供了强大的 数据清洗、预处理、转换、分析 和 可视化 功能。它通常与 NumPy、Matplotlib、Seaborn、Scikit-Learn 等库结合使用,帮助构建高效的数据挖掘流程。 📌 1. 读取数据 P…...
explore与explode词源故事
英语单词explore来自古法语,源自拉丁语,由前缀ex-(出来)加词根plor-(叫喊)以及末尾的小尾巴-e组成,字面意思就是“喊出来,通过叫喊声赶出来”。它为什么能表示“探索”呢?…...
CAM350_安装
版本:V14.5 一、安装 打开.exe文件 选择不重启,然后再打开这个.exe 再来一次类似的操作 二、配置 复制patch文件夹中的这三个 ,粘贴到掉安装目录中 设置ACT_INC_LICENSE_FILE用户环境变量来设置license管理 打开电脑的环境变量 破解完毕&am…...
51c自动驾驶~合集22
我自己的原文哦~ https://blog.51cto.com/whaosoft/11870502 #自动驾驶数据闭环最前沿论文 近几年,自动驾驶技术的发展日新月异。从ECCV 2020的NeRF问世再到SIGGRAPH 2023的3DGS,三维重建走上了快速发展的道路!再到自动驾驶端到端技术的…...
games101 作业5
题目 光线追踪的核心算法: 1.光线的生成 2.光线与三角的相交 题解 1.光线的生成 如课件中的图所示: image plane 就是 代码中的scene的FrameBuffer。 但是,FrameBuffer 是窗口坐标系中,而光线是世界坐标系中的。所以我们需要将scene中的屏…...
【高并发秒杀系统设计:从Guava到Redis的6级缓存架构演进】
一、瞬时十万QPS场景分析 1.1 典型秒杀场景特征 public class SpikeScenario {// 特征1:瞬时流量突增private static final int QPS 100000; // 正常流量100倍// 特征2:资源竞争激烈private int stock 1000; // 100万人抢1000件商品// 特征3&#…...
2-程序语言基础知识
本节内容不是很多,在考试中一般是2-3分,多看教材,考试中大概都是原话 本节主要考点 1、编译程序和解释程序 2、程序语言的数据成分和控制成分(多看教材) 3、编译程序的过程(多看教材) 4、中缀、前缀与后缀表达式(增加) 教材P42-52,54-58多看一下 1、程序语言概述 机器…...
【AIGC系列】4:Stable Diffusion应用实践和代码分析
AIGC系列博文: 【AIGC系列】1:自编码器(AutoEncoder, AE) 【AIGC系列】2:DALLE 2模型介绍(内含扩散模型介绍) 【AIGC系列】3:Stable Diffusion模型原理介绍 【AIGC系列】4࿱…...
小米火龙CPU和其他几代温度太高的CPU是由谁代工的
小米火龙CPU”并非小米自研芯片,而是指搭载在小米手机上的部分高通骁龙处理器因发热问题被调侃为“火龙”。以下是几款被称为“火龙”的高通CPU及其代工情况: 骁龙810 骁龙810是高通历史上最著名的“火龙”之一,采用台积电20nm工艺代工。由于…...
在 ASP.NET Core 中压缩并减少图像的文件大小
示例代码:https://download.csdn.net/download/hefeng_aspnet/90294127 在当今的数字时代,图像是 Web 应用程序和用户体验不可或缺的一部分。但是,处理大型图像文件可能会导致网页加载缓慢和更高的存储费用。为了解决这个问题,在…...
李慕婉-仙逆-造相Z-Turbo应用:自动化小说解析与视觉化内容生成系统
李慕婉-仙逆-造相Z-Turbo应用:自动化小说解析与视觉化内容生成系统 想象一下,你是一家网络文学平台的内容运营。每天,海量的新章节需要配图,作者们渴望看到自己笔下的人物和世界被具象化,读者则期待更沉浸的阅读体验。…...
S2-Pro集成Python爬虫实战:自动化数据采集与智能分析应用
S2-Pro集成Python爬虫实战:自动化数据采集与智能分析应用 1. 引言:当爬虫遇上大模型 最近帮一家电商公司做市场调研时,遇到了一个典型问题:他们需要监控竞品价格和用户评价,但手动收集数据效率太低。传统爬虫能抓取数…...
Qwen3.5-2B生成Typora风格技术文档:Markdown与图表自动编排
Qwen3.5-2B生成Typora风格技术文档:Markdown与图表自动编排 1. 技术写作的新助手 技术文档写作一直是开发者头疼的问题。从项目README到API文档,再到技术报告,我们经常需要花费大量时间在格式调整和排版上。传统写作工具要么功能单一…...
Nano-Banana多场景落地:汽车内饰配件爆炸图AI辅助设计案例
Nano-Banana多场景落地:汽车内饰配件爆炸图AI辅助设计案例 1. 引言:当汽车设计遇上AI拆解美学 想象一下,你是一位汽车内饰设计师。面对一个复杂的中央扶手总成,里面有几十个塑料件、卡扣、线束和电子模块。你需要向客户、工程师…...
MicroPython-lib终极指南:嵌入式Python开发者的完整资源库
MicroPython-lib终极指南:嵌入式Python开发者的完整资源库 【免费下载链接】micropython-lib Core Python libraries ported to MicroPython 项目地址: https://gitcode.com/gh_mirrors/mi/micropython-lib MicroPython-lib是专为MicroPython设计的完整标准库…...
蓝桥杯备赛:Day5-P1036 选数
📚 算法笔记:P1036 [NOIP 2002 普及组] 选数 1. 题目描述 [P1036 NOIP 2002 普及组] 选数 - 洛谷 从 nnn 个整数中任选 kkk 个数相加,统计有多少种选法的和为质数。 数据范围:n≤20,k<nn \le 20, k < nn≤20,k<n&…...
深入Linux 0.11内核:从_syscall1宏到系统调用表的完整链路拆解
深入Linux 0.11内核:从_syscall1宏到系统调用表的完整链路拆解 在操作系统的演进历程中,系统调用机制始终扮演着用户程序与内核服务之间的关键桥梁角色。对于希望真正理解计算机系统底层运作的开发者而言,掌握系统调用的完整实现链路不仅是提…...
5分钟搞定OpenClaw+百川2-13B:WebUI v1.0极简配置指南
5分钟搞定OpenClaw百川2-13B:WebUI v1.0极简配置指南 1. 为什么选择这个组合? 上周我在调试一个本地自动化助手时,发现OpenClaw默认对接的云端模型响应速度不稳定,于是决定尝试本地部署百川2-13B量化版。这个组合带来的最直接好…...
OpenClaw+千问3.5-9B资料整理术:自动归类学术PDF与笔记
OpenClaw千问3.5-9B资料整理术:自动归类学术PDF与笔记 1. 为什么需要自动化资料整理 作为一名长期与学术文献打交道的科研工作者,我电脑里的PDF文件数量已经突破四位数。每次下载新论文时,手动重命名文件、记录关键信息、整理到对应文件夹的…...
SEO_2024年最新SEO趋势与核心优化方法介绍(163 )
2024年最新SEO趋势解析:核心优化方法详解 在2024年,搜索引擎优化(SEO)仍然是数字营销中的关键组成部分。随着搜索引擎算法的不断更新,SEO的趋势和核心优化方法也在不断演变。本文将详细解析2024年的最新SEO趋势&#…...
