2025 RocketMQ 面试题大全(精选90题)

一、基础概念题

1. RocketMQ的四种消息类型中,以下哪些是正确的?

RocketMQ支持四种消息类型:普通消息、顺序消息、延迟消息和事务消息。

  • 普通消息:无特殊顺序或延迟要求的消息。
  • 顺序消息:保证消息按发送顺序被消费。
  • 延迟消息:消息发送后不立即投递,而是延迟指定时间后再消费。
  • 事务消息:支持分布式事务,通过两阶段提交保证消息发送与本地事务的一致性。

2. 在RocketMQ中,以下哪些组件是消息存储的核心?

RocketMQ的消息存储核心组件是 CommitLogConsumeQueue

  • CommitLog:存储所有消息的物理文件,消息以顺序追加方式写入。
  • ConsumeQueue:逻辑队列,记录消息在CommitLog中的偏移量,供消费者快速定位消息。

3. RocketMQ支持哪些消息发送模式?

RocketMQ支持三种消息发送模式:

  • 同步发送:发送方发送消息后等待Broker确认,可靠性高但性能较低。
  • 异步发送:发送方发送消息后无需等待Broker确认,性能较高但需处理回调。
  • 单向发送:发送方只发送消息,不关心Broker是否接收成功,性能最高但可靠性最低。

4. RocketMQ中的NameServer主要负责什么?

NameServer是RocketMQ的路由注册中心,主要职责包括:

  • Broker管理:接收Broker的心跳上报,维护Broker的动态路由信息。
  • 路由发现:为Producer和Consumer提供Topic的路由信息(如Broker地址)。
  • 轻量级设计:无状态,可横向扩展,支持动态更新路由信息。

5. RocketMQ的Broker组件支持哪些功能?

Broker是RocketMQ的核心存储和转发组件,支持以下功能:

  • 消息存储:将消息持久化到磁盘(CommitLog和ConsumeQueue)。
  • 消息转发:根据路由规则将消息转发给消费者。
  • 消息查询:支持按消息ID或Key查询消息。
  • 主从同步:通过主从复制实现高可用性。
  • 流量控制:根据负载动态调整消息发送速率。

6. 在RocketMQ中,以下哪些是消息消费的模式?

RocketMQ支持两种消息消费模式:

  • 集群消费(Clustering):同一Consumer Group内的消费者共享消息,每条消息只被一个消费者消费。
  • 广播消费(Broadcasting):同一Consumer Group内的每个消费者都会收到所有消息。

7. RocketMQ支持哪些消息过滤方式?

RocketMQ支持两种消息过滤方式:

  • Tag过滤:根据消息的Tag属性进行简单过滤(如TagA || TagB)。
  • SQL过滤:通过SQL表达式对消息属性进行复杂过滤(需Broker配置enablePropertyFilter=true)。

8. RocketMQ的事务消息是如何实现的?

事务消息通过两阶段提交(2PC)实现:

  • 预提交(Half Message):Producer发送事务消息到Broker,Broker暂存消息但不暴露给消费者。
  • 本地事务执行:Producer执行本地事务(如数据库操作)。
  • 提交或回滚:根据本地事务结果,Producer向Broker发送提交或回滚命令。
  • 回查机制:若Broker未收到提交/回滚命令,会主动回查Producer确认事务状态。

9. RocketMQ的顺序消息是如何保证顺序性的?

顺序消息通过以下机制保证顺序性:

  • 顺序发送:Producer按顺序发送消息到同一Queue。
  • 顺序存储:Broker将同一Queue的消息顺序写入CommitLog。
  • 顺序消费:Consumer从同一Queue按顺序拉取并消费消息。
  • 单线程消费:每个Queue对应一个消费线程,避免并发导致的乱序。

10. 在RocketMQ中,以下哪些操作是Producer可以执行的?

Producer可以执行以下操作:  
- **发送消息**:同步、异步或单向发送消息到Broker。  
- **查询消息**:根据消息ID或Key查询消息状态。  
- **关闭连接**:释放资源并断开与Broker的连接。

11. RocketMQ的Consumer可以执行哪些操作?

Consumer可以执行以下操作:  
- **订阅消息**:根据Topic和Tag订阅消息。  
- **消费消息**:拉取消息并处理业务逻辑。  
- **提交消费进度**:记录消息的消费偏移量(Offset)。  
- **关闭消费**:停止消费并释放资源。

12. RocketMQ的NameServer提供了哪些服务?

NameServer提供以下服务:  
- **路由注册**:接收Broker上报的Topic路由信息。  
- **路由查询**:为Producer和Consumer提供Topic的Broker地址列表。  
- **Broker状态管理**:检测Broker的存活状态并剔除失效节点。  
- **轻量级通信**:通过HTTP或RPC协议与客户端交互。

13. RocketMQ的Broker支持哪些消息存储方式?

Broker支持两种消息存储方式:  
- **同步刷盘**:消息写入磁盘后返回确认,可靠性高但性能较低。  
- **异步刷盘**:消息先写入内存再异步刷盘,性能高但存在丢消息风险(需配合主从同步使用)。

14. RocketMQ支持哪些消息消费的幂等性保证?

RocketMQ通过以下方式保证消息消费的幂等性:  
- **唯一ID**:每条消息生成全局唯一ID,消费者通过ID去重。  
- **业务去重表**:在业务层记录已处理消息的标识(如订单号),避免重复处理。  
- **消费进度(Offset)**:Consumer通过提交Offset标记已消费消息,防止重复投递。

15. RocketMQ的监控指标包括哪些?

RocketMQ的关键监控指标包括:  
- **TPS/QPS**:每秒发送/查询的消息数。  
- **堆积量(堆积时间)**:未被消费的消息数量或最大堆积时间。  
- **Broker磁盘使用率**:CommitLog和ConsumeQueue的磁盘占用。  
- **主从同步延迟**:主从Broker之间的数据同步延迟。  
- **拒绝率**:因流量控制或资源不足被拒绝的消息比例。

16. RocketMQ的高可用性是如何实现的?

RocketMQ通过以下机制实现高可用性:  
- **主从复制**:Broker支持主从架构,Master处理读写请求,Slave同步数据。  
- **故障转移**:当Master宕机时,NameServer将路由指向Slave,由Slave接管服务。  
- **多副本存储**:消息可配置多副本,避免单点故障导致数据丢失。

17. RocketMQ的消息重试机制是如何工作的?

消息重试机制如下:  
- **消费失败重试**:Consumer消费消息失败时,可配置重试次数(默认16次)。  
- **重试队列**:重试消息会被投递到重试队列(`%RETRY%ConsumerGroup@Topic`)。  
- **死信队列(DLQ)**:超过最大重试次数的消息会进入死信队列(`%DLQ%ConsumerGroup@Topic`),需人工干预处理。

18. RocketMQ的分布式事务是如何实现的?

RocketMQ通过事务消息实现分布式事务:  
- **预提交阶段**:Producer发送事务消息到Broker,Broker暂存消息。  
- **本地事务执行**:Producer执行本地事务(如数据库操作)。  
- **提交或回滚**:根据本地事务结果,Producer向Broker发送提交或回滚命令。  
- **回查机制**:若Broker未收到提交/回滚命令,会主动回查Producer确认事务状态,确保最终一致性。

19. RocketMQ的消息轨迹功能可以提供哪些信息?

消息轨迹功能记录消息的完整生命周期信息,包括:  
- **生产信息**:Producer发送消息的时间、Broker地址。  
- **存储信息**:消息在CommitLog中的物理位置、存储时间。  
- **消费信息**:Consumer拉取消息的时间、消费状态(成功/失败)。  
- **重试信息**:消息重试次数、重试原因(如消费失败)。

20. RocketMQ的消息堆积处理策略包括哪些?

消息堆积处理策略包括:  
- **监控告警**:实时监控堆积量,触发阈值告警。  
- **扩容消费者**:增加Consumer实例或提升消费性能。  
- **优化消费逻辑**:减少单条消息处理时间,避免阻塞。  
- **清理堆积消息**:对过期或无效消息进行清理或迁移。  
- **流量控制**:限制Producer发送速率,避免堆积加剧。

二、架构与设计题

21. 为什么要使用消息队列?

消息队列通过解耦系统组件、异步处理任务和削峰填谷,提升系统的可扩展性、响应速度和稳定性。它允许生产者和消费者独立扩展,缓冲瞬时流量,避免后端系统过载,同时支持分布式事务和最终一致性。

22. 为什么要选择RocketMQ?

RocketMQ具有低延迟、高吞吐量、高可靠性和强一致性,支持海量消息堆积和复杂业务场景。其分布式架构支持水平扩展,提供丰富的消息类型(如顺序消息、事务消息)和灵活的部署方式,适合大规模分布式系统。

23. RocketMQ有什么优缺点?

  • 优点:高可用(主从复制+Dledger)、高性能(顺序写入CommitLog)、功能丰富(多种消息模式)、生态兼容(与Spring Cloud Alibaba集成)。
  • 缺点:运维复杂度高,依赖NameServer或ZooKeeper,社区活跃度低于Kafka。

24. RocketMQ的消息模型是怎样的?

RocketMQ采用发布-订阅模型,消息按Topic分类,消费者通过Group订阅Topic。支持四种消息类型:普通、顺序、事务和延时消息,满足不同场景需求。

25. RocketMQ基本架构是怎样的?

RocketMQ由四部分组成:

  • NameServer:轻量级路由注册中心,无状态,支持集群部署。
  • Broker:消息存储节点,分Master和Slave,支持主从同步和Dledger高可用。
  • Producer:生产者,支持分布式部署和负载均衡。
  • Consumer:消费者,支持推/拉模式,提供集群消费和广播消费。

26. RocketMQ的消息存储机制是如何设计的?

  • CommitLog:顺序写入所有消息,支持同步/异步刷盘,保证持久化。
  • ConsumeQueu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值