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有哪些角…...
破解密码防线:渗透测试中的密码攻击手法汇总
密码是网络安全中的一道重要防线,然而,若密码策略不严密,往往会为攻击者提供可乘之机。本文将简要介绍渗透测试中关于密码的几种常见攻击思路和手法。 1. 确认使用默认及常见的账号密码 在渗透测试的初期,攻击者通常会尝试使用系…...
大模型在白血病诊疗全流程风险预测与方案制定中的应用研究
目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与白血病相关知识 2.1 大模型技术原理与特点 2.2 白血病的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模型预测术前风险 3.3 根据…...
5-2JVM内存的各种应用
一、堆区(Heap)——对象实例的存储池 实际应用场景: 对象实例化:所有通过 new 关键字创建的对象实例均存储在堆中。例如: java Person person new Person(“张三”); // person对象实例分配在堆区1,4,6 大对象直…...
【NLP 28、一文速通NLP文本分类任务 —— 深度学习】
目录 一、深度学习 — pipeline 流水线 1.配置文件 config.py Ⅰ、路径相关 Ⅱ、模型相关 Ⅲ、训练相关 2.数据加载 loader.py Ⅰ、类初始化 Ⅱ、加载数据并预处理 Ⅲ、文本编码 Ⅳ、对输入序列截断或填充 Ⅴ、返回数据长度 Ⅵ、返回对应索引位置元素 Ⅶ、加载词表 Ⅷ、封装数据…...
nvidia驱动更新,centos下安装openwebui+ollama(非docker)
查看centos内核版本 uname -a cat /etc/redhat-release下载对应的程序(这个是linux64位版本通用的) https://cn.download.nvidia.cn/tesla/550.144.03/NVIDIA-Linux-x86_64-550.144.03.run cudnn想办法自己下一下,我这里是12.x和11.x通用的…...
UnrealEngine UE5 可视化 从地球观察火星 金星 土星 运动轨迹
视频参考:https://www.bilibili.com/video/BV1KpXSYdEdo/ 从地球观察土星的运动轨迹 从地球观察火星 轨迹 从地球观察金星的运动轨迹...
蓝桥杯 五子棋对弈
五子棋对弈 问题描述 “在五子棋的对弈中,友谊的小船说翻就翻?” 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着"友谊第一,比赛第二"的宗旨ÿ…...
springmvc热点面试题开胃菜
1. Spring MVC的核心组件有哪些?它们的作用是什么? 答案: Spring MVC的核心组件包括以下部分,每个组件都有其特定的作用: DispatcherServlet: 前端控制器,是Spring MVC的核心。它负责接收所有H…...
关于深度学习的一份介绍
在这篇文章中,我将介绍有关深度学习的东西,主要是它与神经网络的关系、目前主要的网络有哪些,以及加深神经网络的意义等。 一、联系 在之前的文章中,我曾介绍过神经网络,而所谓的神经网络其实就是深度学习的一种架构…...
JavaScript系列02-函数深入理解
本文介绍了JavaScript函数相关知识,包括 函数声明与函数表达式 - 解释两者的区别,提升行为,以及使用场景箭头函数特性 - 讲解语法、词法this、不能作为构造函数等特点this绑定机制 - 详细讲解四种绑定规则:默认绑定、隐式绑定、显…...
Netty是怎么实现Java NIO多路复用的?(源码)
目录 NIO多路复用实现事件循环是什么?核心源码(1)调用 NioEventLoopGroup 默认构造器(2)指定 SelectorProvider(3)创建 Selector(4)创建单线程和队列(5&#…...
SourceTree配置SSH步骤详解
1. 生成SSH密钥对 如果尚未生成SSH密钥,需先创建: Windows/macOS/Linux通用方法 打开终端(或Git Bash)。 输入以下命令(替换为你的邮箱): bash 复制 ssh-keygen -t ed25519 -C "your_em…...
Rocky Linux 8.5 6G内存 静默模式(没图形界面)安装Oracle 19C
Oracle19c 下载地址 Database Software Downloads | Oraclehttps://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_ee 目录 一、准备服务器 1、服务器可以克隆、自己装 2、修改主机名 3、重启 4、关闭selinux 5、关闭防火墙 5.1、…...
免费轻巧多功能 PDF 处理工具:转换、压缩、提取一应俱全
软件技术 今天要给大家分享一款超实用的 PDF 处理工具,它免费又轻巧,如同随时待命的得力小帮手,功能之强大超乎想象,真的值得大家收藏。 这款工具是绿色版软件,解压后开启,满满的 PDF 处理功能便映入眼帘…...
基于ssm的校园跑腿管理系统+vue
作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统共有管理员、用户两个角色 管理员主要的功能用户信息管理、任务信息管理、任务类型管理、接单信息管理、公告信息管理、投诉信息管理、公告类型管…...
java数据结构_Map和Set_9.1
1. 搜索树 1.1 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有的结点都小于根结点的值若它的右子树不为空,则右子树上所有的结点都大于根结点的值…...
横向移动靶场-Tr0ll: 3
Tr0ll: 3来自 <Tr0ll: 3 ~ VulnHub> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.187 3,对靶机进行端口服务探测 …...
请解释 Node.js 中的网络模块(http、https),如何创建 HTTP服务器?
1. Node.js 中的网络模块(http 和 https) 原理与作用: Node.js 的 http 和 https 模块是内置的核心模块,用于创建 HTTP 和 HTTPS 服务器。 http 模块基于 Node.js 的事件驱动架构,利用 libuv 和 HTTP parser 库高效处…...
【WPF命令绑定之--没有Command属性的控件如何进行命令绑定?】
前言 C#WPF之命令绑定 内容 有些控件不支持直接绑定命令,可以调用其他依赖实现命令的绑定。 依赖:Microsoft.Xaml.Behaviors.Wpf 使用如下代码可以实现事件的命令绑定,及传递参数: 1、引用:xmlns:behavior“http://sch…...
记20忘10之六:line
记20忘10之六:line 胖子定律:每天坚持多咬两口,相信将来自己就是个胖子 今天,我们继续来记几个单词吧, line n.线 moral bottom line道德底线 派生、同源或相关: linear a.线的,直线的lineamen…...
【愚公系列】《Python网络爬虫从入门到精通》036-DataFrame日期数据处理
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
【系统稳定性】1.11 QVM稳定性问题分析(一)
目录 写在前面 一,qvm进程异常 1.1 进程崩溃(Coredump) 1.2 进程卡死 1.3 进程重启 二,qvm进程异常分析过程 写在前面 在QVM(Quantum Virtual Machine)作为HOST QNX的Guest,同样会遇到重启、Watchdog(看门狗)等稳定性问题。 这里我们把qvm的异常归类为两类问题…...
使用ChatGPT-Deep Reaserch两步给出文献综述!
文献综述是学术论文写作中不可或缺的一部分,它不仅是对已有研究的梳理和总结,更是为后续研究奠定理论基础的关键步骤。通过文献综述研究者能够全面了解当前研究领域的现状、主要观点和研究方法,从而找到自己研究的切入点和创新点。这一过程需…...
从0开始的操作系统手搓教程14——进一步完成中断子系统
目录 所以,如何查看我们的IDT呢 改进我们的中断处理hook 对8253编程,提升系统的频率 导论 控制字说明 说一下每个方式——概论 说一说计数器如何进行计时 方式0 方式1 方式2 方式3 方式4 方式5 回到问题,我们如何设置单次触发冲…...
小米火龙CPU和其他几代温度太高的CPU是由谁代工的
小米火龙CPU”并非小米自研芯片,而是指搭载在小米手机上的部分高通骁龙处理器因发热问题被调侃为“火龙”。以下是几款被称为“火龙”的高通CPU及其代工情况: 骁龙810 骁龙810是高通历史上最著名的“火龙”之一,采用台积电20nm工艺代工。由于…...
Educational Codeforces Round 174 (Rated for Div. 2)
Problem - B - Codeforces 之前没思路,我看了看答案。 思路不就来了: 简而言之,BFS那样遍历周围(上下左右均一次),如果有同色,就把这部分相邻的隔开,可以得到两块陌生人集合&#x…...
微服务即时通信系统---(七)文件管理子服务
目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程 服务代码实现 封装文件操作模块(utils.hpp) 获取唯一标识ID 文件读操作 文件写操作 编写proto文件 文件元信息 文件管理proto 单文件上传 多文件上传 单文件下载 多文件下载 RPC调用 服务端创建子…...
mosfet的驱动设计-开关损耗
目录 1.开关时的DS损耗 2.导通损耗 3.截止损耗 4.驱动损耗 mos管的损耗主要有开关损耗和导通损耗两部分,开关损耗包括mos管开通是消耗的能量和在mos在线性区产生的损耗。导通损耗是由mos的导通电阻电阻消耗的能量。 mos的实际模型 我们先来感性的…...
Unity3D 对象实例化详解
前言 在Unity3D中,对象的实例化是游戏开发中非常常见的操作。无论是生成敌人、道具,还是动态创建UI元素,实例化都是实现这些功能的核心技术之一。本文将详细介绍Unity3D中对象实例化的原理、技术细节以及代码实现。 对惹,这里有…...
