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

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:绑定,连接 ExchangeQueue
  • Routing Key:路由关键字,用于消息路由。
  • VHost:虚拟Broker,提供权限隔离。
  • Producer:消息生产者。
  • Consumer:消息消费者。

七、RabbitMQ有几种工作模式?

解答:RabbitMQ 有以下几种工作模式:

  • Simple模式:最简单的消息收发模式。
  • Work模式:多个消费者竞争同一队列中的消息。
  • Publish/Subscribe模式:发布订阅模式,消息分发到所有订阅的队列。
  • Routing模式:路由模式,根据路由键将消息发送到特定队列。
  • Topic模式:主题模式,使用通配符进行模糊匹配消息路由。

八、如何保证RabbitMQ消息的顺序性?

解答:保证 RabbitMQ 消息顺序性的方法包括:

  • 使用单个消费者监听单个队列。
  • 将相关业务数据发送到同一个队列中。
  • 在消费者内部实现有序处理逻辑。

九、消息怎么路由?

解答:消息路由通过 Exchange 完成,生产者将消息发送到 ExchangeExchange 根据路由键将消息路由到一个或多个绑定的队列中。

十、如何保证消息不被重复消费?

解答:防止消息重复消费的方法包括:

  • 使用消息的唯一ID进行去重。
  • 利用 RabbitMQ 的确认机制( ACK ),确保消息被正确处理后才从队列中删除。
  • 通过数据库或缓存(如 Redis )记录已处理消息的状态。

十一、如何确保消息接收方消费了消息?

解答:
确保消息被消费的方法是使用 RabbitMQ 的确认机制。消费者在处理完消息后发送确认回执给 RabbitMQRabbitMQ 收到确认后才从队列中移除消息。

十二、如何保证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组成,字面意思就是“喊出来,通过叫喊声赶出来”。它为什么能表示“探索”呢&#xff1f…...

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&#xff1…...

小米火龙CPU和其他几代温度太高的CPU是由谁代工的

小米火龙CPU”并非小米自研芯片,而是指搭载在小米手机上的部分高通骁龙处理器因发热问题被调侃为“火龙”。以下是几款被称为“火龙”的高通CPU及其代工情况: 骁龙810 骁龙810是高通历史上最著名的“火龙”之一,采用台积电20nm工艺代工。由于…...

在 ASP.NET Core 中压缩并减少图像的文件大小

示例代码:https://download.csdn.net/download/hefeng_aspnet/90294127 在当今的数字时代,图像是 Web 应用程序和用户体验不可或缺的一部分。但是,处理大型图像文件可能会导致网页加载缓慢和更高的存储费用。为了解决这个问题,在…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块&#xff0…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

CTF show 数学不及格

拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 ​ 用IDA Pro 64 打开这个文件 ​ 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 ​ 根据题目…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...