【面试八股|RabbitMQ】RabbitMQ常见面试题详解笔记

这里根据个人说话口吻等编写Spring常见面试题用于记录复习,后续会持续更新补充,欢迎点赞收藏。

消息队列

常见消息队列对比

RabbitMQ ActiveMQ RocketMQ Kafka
公司/社区 Rabbit Apache 阿里 Apache
开发语言 Erlang Java Java Scala&Java
协议支持 AMQP,XMPP,SMTP,STOMP OpenWire,STOMP,REST,XMPP,AMQP 自定义协议 自定义协议
可用性 一般
单机吞吐量 一般 非常高
消息延迟 微秒级 毫秒级 毫秒级 毫秒以内
消息可靠性 一般 一般

追求可用性:Kafka、 RocketMQ 、RabbitMQ

追求可靠性:RabbitMQ、RocketMQ

追求吞吐能力:RocketMQ、Kafka

追求消息低延迟:RabbitMQ、Kafka

说说workqueues模型

多个消费者共同处理消息,大大提高工作效率了。默认为能者多劳,但可以通过.yml配置prefetch修改。

队列和交换机声明方式

1.RabbitMQ控制台创建。

2.程序编写:编程式(注入成@Bean),注解式(@RabbitListener)

RabbitMQ有哪些核心组件

1.生产者,交换机,队列,消费者,虚拟主机

2.交换机分为四类,Direct(直连),Fanout(广播),Topic(主题),Headers(头)

3.其中fanout忽略路由键,广播所有绑定的队列。Direct通过路由键与绑定键的匹配实现点对点通信。Topic通过通配符实现规则绑定

惰性队列是什么

为避免内存消息堆积导致存入磁盘的pageout阻塞,出现了lazyqueue。LazyQueue接受消息直接存入磁盘而非内存,支持懒加载,可存储百万条消息。

RabbitMQ的消息可靠性

可以从生产者发送消息到mq可靠性,mq存储消息可靠性,消费者处理消息可靠性三方面入手

生产者可靠性:

1.生产者确认机制,通过.yml与全局的returncallback配置类,局部的ConfirmCallback开启Publisher Confirm与Publisher Return机制。

2.生产者重试机制,修改.yml文件超时时间,重试次数等

MQ可靠性:

1.数据持久化,交换机,队列,消息持久化

消费者可靠性:

1.消费者确认机制,ack,nack,reject(消息处理失败并拒绝该消息,RabbitMQ从队列中删除该消息)

2.消费者重试机制,修改.yml文件的重试次数,等待时长等

3.失败处理策略,实现MessageRecovery接口

RabbitMQ消息重复消费如何解决

1.开启消费者自动确认机制,但仍可能出现服务确认前宕机,重启后再次消费的情况。

2.通过业务唯一id检查数据库数据是否存在避免重复被消费

3.可通过分布式锁避免两条消息同时被消费的情况

说说RabbitMQ的延迟消息

1.有两种实现方式,死信交换机+TTL和延迟消息插件

2.当消息超时未被消费成为死信,队列可绑定到死信交换机,再传递给其它队列被处理,实现延迟功能

3.通过安装DelayExchange插件,指定死信交换机与超时时间实现延迟功能

数百万消息存在mq怎么解决

1.使用惰性队列,存储到磁盘中

2.提高消费者能力,使用多个消费者,多线程

相关推荐
做cv的小昊39 分钟前
【TJU】研究生应用统计学课程笔记(2)——第一章 数理统计的基本知识(1.3 统计中常用的分布族)
笔记·线性代数·数学建模·矩阵·概率论·学习方法·抽象代数
ouliten41 分钟前
cuda编程笔记(38)--CUDA 异步回调
笔记·cuda
Better Bench1 小时前
《八十天环游地球》阅读笔记
笔记·读书笔记·八十天环游地球
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2026.04.21 题目:1722. 执行交换操作后的最小汉明距离
笔记·算法·leetcode
小灵吖2 小时前
不懂 exec 不好意思说会 Linux
后端·面试
ShineWinsu2 小时前
对于Linux:进程间通信IPC(命名管道)的解析
linux·c++·面试·笔试·进程·ipc·命名管道
阿Y加油吧2 小时前
两道 LeetCode 题的复盘笔记:从「只会暴力」到「懂优化」
笔记·算法·leetcode
前端摸鱼匠3 小时前
【AI大模型春招面试题25】掩码自注意力(Masked Self-Attention)与普通自注意力的区别?适用场景?
人工智能·ai·面试·大模型·求职招聘
chudonghao3 小时前
[UE学习笔记][基于源码] 控制器、Pawn、相机的控制关系
笔记·学习·ue5
yaoyouzhong3 小时前
RabbitMQ HAProxy 负载均衡
rabbitmq·负载均衡·ruby