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

RocketMQ面试题

目录

一、RocketMQ消息是如何存储的

二、RocketMQ延迟消息是如何实现的

三、RocketMQ提供了哪些消息过滤机制


一、RocketMQ消息是如何存储的

RocketMQ的消息存储是一个复杂而高效的过程,设计上充分考虑了性能和扩展性。消息存储的主要组件包括CommitLog文件、消费队列文件(ConsumeQueue)、以及索引|文件(IndexFile)。我们来详细解释一下这几个核心部分。
1. CommitLog文件
CommitLog是RocketMQ的核心存储文件,负责保存消息的完整内容。
顺序写入:所有的消息都顺序写入Commitlog文件,这种方式减少了磁盘寻道时间,提高了写入性能。
文件滚动:CommitLog按照固定大小(比如1GB)进行分片。当一个文件写满后,会创建一个新的文件。
存储所有数据:包括消息体、主题、队列ID等。
2. ConsumeQueue文件
ConsumeQueue是针对消息的逻辑视图,旨在加快消费者对消息的访问速度。
条目固定:每个ConsumeQueue条目固定为20字节,包含消息在CommitLog中的偏移量、消息大小、Tag哈希值。
独立文件:每个主题的每个队列都有独立的ConsumeQueue文件,文件路径为store/consumequeue/{topic}/{queueId}。
快速定位:通过ConsumeQueue,消费者无需扫描整个CommitLog即可快速找到消息的位置。

3.IndexFile文件
IndexFile用于支持消息的快速检索。
哈希索引:为消息的key建立哈希索引,支持通过key快速检索消息偏移。
增强查询:IndexFile是可选的,用于需要基于消息属性进行快速查找的场景。


消息存储流程
1.接收消息:Broker接收到消息后,将其放入内存缓冲区(待写入CommitLog)。
2.写入CommitLog:
每条消息追加到当前活跃的CommitLog文件中。使用顺序写入提升写入效率和磁盘利用率。
3.同步到ConsumeQueue:
异步转发服务(ReputMessageService)从CommitLog读取新写入的消息。
将消息的偏移量和其他元数据(如大小和Tag哈希值)存储到相应的ConsumeQueue文件中。
4.更新IndexFile(可选):
若消息带有key(如业务ID),则将其哈希和偏移量存入IndexFile。
这样,可以通过该key快速查找消息。

二、RocketMQ延迟消息是如何实现的

RocketMQ通过特定的延迟级别设计实现延迟消息功能。在RocketMQ中,延迟消息是通过设置消息的延迟级别(DelayLevel)来实现的。每个延迟级别对应一个特定的时间段,这样可以让消息在指定的时间之后才被消费。
实现原理
1. 延迟级别:RocketMQ不支持任意时间的延迟,而是提供了18个固定的延迟级别,从1s,5s,10s,30s,1m,2m,3m到2h不等。
2.特殊主题:所有延迟消息都会先发送到一个特殊的内部主题SCHEDULE_TOPIC_XXXX。
3.定时任务:Broker会启动一个定时任务,按照延迟时间的先后顺序依次扫描每个延迟级别队列。
4.消息转移:当扫描到期的消息时,会将消息从延迟队列转移到目标主题。
5.消费者消费:消息被转移到目标主题后,消费者就可以正常消费这条消息了。

三、RocketMQ提供了哪些消息过滤机制

RocketMQ提供了多种消息过滤机制,以便消费者能够根据业务需求进行精确的消息消费。主要的过滤机制包括:
1.Tag过滤:最常用的过滤方式,消费者可以基于消息的Tag进行过滤。
2.SQL92语法过滤:基于Message属性,以SQL92标准语法进行复杂条件过滤,该功能需要Broker支持。

http://www.cnnetsun.cn/news/2118380.html

相关文章:

  • 国有企业信息数据库
  • 瑞芯微(EASY EAI)RV1126B OTG切换成U盘模式
  • 2025届学术党必备的六大降AI率平台解析与推荐
  • 阅读APP书源配置终极指南:3分钟开启海量小说世界
  • 智慧农业图像识别 农作物害虫图像识别 玉米虫害识别 卷心菜害虫检测 田间地老虎图像识别 田间虫害快速识别 农作物病虫害预警系统 深度学习YOLO第10376期
  • AnimateAnyone:如何用一张图片让任何人动起来?图像到视频动画终极指南
  • Akagi智能麻将助手:3分钟掌握AI麻将决策分析神器
  • AI Agent如何通过MCP协议连接杠杆预测市场:Dimes Multiply工具详解
  • 大模型推理加速:最优有损推测解码技术解析
  • 时间折叠术:软件测试从业者的效率跃迁与未来应对策略
  • 5分钟让你的Windows电脑变身AirPlay 2接收器:免费跨屏解决方案
  • 八大网盘直链解析工具:告别限速的完整解决方案
  • DragMesh技术:轻量级3D交互生成的核心突破
  • 从零开始掌握JASP:免费开源统计分析软件的5大核心优势
  • AMD Ryzen处理器终极调试工具:SMUDebugTool完整使用指南
  • 3分钟解决网易云音乐NCM格式播放难题:ncmdump工具完全指南
  • AI模型在数据可视化与Web开发中的能力边界测试
  • 球磨机是个啥玩意儿?老张给你唠明白
  • 画面匹配大师 视频片段查原片软件 极致感受 速橙软件-相同视频片段匹配系统
  • Onekey:3分钟免费解锁Steam游戏的终极一键式工具完全指南
  • MSP432P401R驱动HX711压力传感器:从GPIO配置到精准称重的保姆级代码解析
  • 别再只会转圈了!用STM32 HAL库驱动28BYJ-48步进电机做个迷你云台(附完整代码)
  • Java的java.lang.StackWalker增强报告
  • 3分钟学会:如何用MPC Video Renderer让你的视频画质提升200% [特殊字符]
  • 华硕笔记本性能管家:G-Helper轻量化控制工具完全指南
  • Web Scraper Chrome扩展:高效网页数据提取的智能解决方案
  • Transformer架构与大型语言模型的核心技术解析
  • Claude记忆系统,打造永不遗忘的 AI 助手
  • C:结构体(struct)
  • 基于多模态AI与本地优先架构的考公错题管理助手设计与实现