RabbitMQ消息队列常见面试题

简介: 这篇文章总结了RabbitMQ的常见面试题,涵盖了消息模型、使用场景、实现功能、消息幂等性、顺序性、堆积和丢失的避免方法,以及推模式和拉模式的区别。

前言

本文是对RabbitMQ的常见面试题问答的总结,同时也是一个RabbitMQ的入门学习,还没了解的同学快来认识一下。

1.RabbitMQ消息模型有哪些?

(1)HelloWorld 模型(点对点模型)

  • 一个生产者
  • 一个消息队列
  • 一个消费者

(2)WorkQueues 模型(任务模型)

  • 一个生产者
  • 一个消息队列
  • 多个消费者

(3)Publish/Subscribe 模型(广播模型)

  • 一个生产者
  • 一个 fanout 交换机
  • 多个消息队列
  • 多个消费者
  • 交换机绑定多个队列
  • 每个消息队列绑定一个消费者

(4)Routing 模型(路由模型)

  • 一个生产者
  • 一个 direct 交换机
  • 多个消息队列
  • 多个消费者
  • 交换机绑定多个队列
  • 每个消息队列绑定一个消费者

(5)Topics 模型(动态路由模型)

  • 一个生产者
  • 一个 topic 交换机
  • 多个消息队列
  • 多个消费者
  • 交换机绑定多个队列
  • 每个消息队列绑定一个消费者

参考资料:https://blog.csdn.net/F0217911/article/details/126621205

2.RabbitMQ的使用场景有哪些?

(1)异步处理:比如用户注册或登录时,生产者发送消息到MQ队列,消费者再读取处理消息,执行发送短信和邮件动作。
(2)系统解耦:比如用注册完成,再加一个发送微信通知。只需要新增发送微信消息模块,从MQ中读取任务,发送消息即可。无需改动注册模块的代码,这样注册模块与发送模块通过MQ解耦。
(3)流量削峰:秒杀和抢购等场景经常使用MQ进行流量削峰。活动开始时流量暴增,用户的请求写入MQ,超过MQ最大长度丢弃请求,业务系统接收 MQ中的消息进行处理,达到流量削峰、保证系统可用性的目的。

3.你们用RabbitMQ实现了什么功能?

(1)基于RabbitMQ+Redis+DiyThreadPool实现按顺序幂等消费消息执行任务。

4.如何保证消息幂等性?

消息幂等性是指对于同一条消息,无论重复发送多少次,接收端都只接收到一次消息,且消息的处理结果相同。

(1)生产者生成消息时,每条消息都有唯一ID字段,可以使用UUID或者Snowflake算法等方式生成。
(2)消费者在处理消息时,先根据ID去Redis查询是否存在该消息,若不存在则正产消费,消费完存入此ID到Redis,若存在则说明此消息已被消费过,直接丢弃。

5.如何保证消息顺序性?

很多时候,消息的消费是不用保证顺序的,比如借助mq实现订单超时的处理。但有些时候,业务中可能会存在多个消息需要顺序处理的情况,比如生成订单和扣减库存消息,那肯定是先执行生成订单的操作,再执行扣减库存的操作。

(1)一个消息队列对应一个消费者:这种方法最简单,保证消息是按照顺序进行的。
(2)一个消息队列对应多个消费者:要想保证消息是按照顺序进行的,就得开启单活模式,表示是否最多只允许一个消费者消费,如果有多个消费者同时绑定,则只会激活第一个,除非第一个消费者被取消或者死亡,才会自动转到下一个消费者。

参考资料:https://baijiahao.baidu.com/s?id=1773108861109586675

6.如何避免消息堆积?

消息队列的消息堆积可能是由于消费者无法及时处理消息、消费者处理消息的速度跟不上消息的产生速度、消息队列的容量不足等原因造成的。

(1)增加消息队列数量。
(2)增加消费者数量。
(3)通过自定义线程池异步消费。

7.如何避免消息丢失?

丢失情况主要有生产者丢失消息、消息队列丢失消息、消费者丢失消息三种情况。

(1)消息确认机制。
(2)消息持久化。

8.RabbitMQ中推模式和拉模式的区别

(1)推模式是中间件将消息提前推送给消费者,消费者需设置一个缓冲区缓存消息。好处是消费者总是有一堆在内存中待处理的消息,所以效率高,缺点是缓冲区可能会溢出。
(2)拉模式是消费者有需要时才去中间件拉取消息。
(3)推模式更关注实时性,拉模式更关注消费者的消费能力。
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
6月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
4月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
309 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
8月前
|
消息中间件 架构师 Java
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
920 89
|
12月前
|
消息中间件 存储 Java
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
45岁资深架构师尼恩在其读者群中分享了关于如何提升RocketMQ顺序消费性能的高并发面试题解析。面对10W QPS的高并发场景,尼恩详细讲解了RocketMQ的调优策略,包括专用方案如增加ConsumeQueue数量、优化Topic设计等,以及通用方案如硬件配置(CPU、内存、磁盘、网络)、操作系统调优、Broker配置调整、客户端配置优化、JVM调优和监控与日志分析等方面。通过系统化的梳理,帮助读者在面试中充分展示技术实力,获得面试官的认可。相关真题及答案将收录于《尼恩Java面试宝典PDF》V175版本中,助力求职者提高架构、设计和开发水平。
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
|
消息中间件 运维 Java
招行面试:RocketMQ、Kafka、RabbitMQ,如何选型?
45岁资深架构师尼恩针对一线互联网企业面试题,特别是招商银行的高阶Java后端面试题,进行了系统化梳理。本文重点讲解如何根据应用场景选择合适的消息中间件(如RabbitMQ、RocketMQ和Kafka),并对比三者的性能、功能、可靠性和运维复杂度,帮助求职者在面试中充分展示技术实力,实现“offer直提”。此外,尼恩还提供了《尼恩Java面试宝典PDF》等资源,助力求职者提升架构、设计、开发水平,应对高并发、分布式系统的挑战。更多内容及技术圣经系列PDF,请关注【技术自由圈】获取。
|
消息中间件 大数据 Kafka
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
本文深入探讨了消息队列的核心概念、应用场景及Kafka、RocketMQ、RabbitMQ的优劣势比较,大厂面试高频,必知必会,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
|
消息中间件 存储 canal
阿里面试:canal+MQ,会有乱序的问题吗?
本文详细探讨了在阿里面试中常见的问题——“canal+MQ,会有乱序的问题吗?”以及如何保证RocketMQ消息有序。文章首先介绍了消息有序的基本概念,包括全局有序和局部有序,并分析了RocketMQ中实现消息有序的方法。接着,针对canal+MQ的场景,讨论了如何通过配置`canal.mq.partitionsNum`和`canal.mq.partitionHash`来保证数据同步的有序性。最后,提供了多个与MQ相关的面试题及解决方案,帮助读者更好地准备面试,提升技术水平。
阿里面试:canal+MQ,会有乱序的问题吗?
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
消息中间件
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!
211 1