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

RocketMq面试

一、Queue和ConsumeQueue什么关系?

1、Queue(队列) - 逻辑概念
2、ConsumeQueue是物理实现,是磁盘上实实在在的文件,存储在$RocketMQ_HOME/store/consumequeue/{topic}/{queueId}目录下

ConsumeQueue存的是什么?存储内容:每个条目固定20字节,包含:


CommitLog Offset8字节):消息在CommitLog中的起始物理偏移量
Size4字节):消息体大小
Message Tag HashCode8字节):消息标签的哈希值,用于Tag过滤

那么什么时候创建索引ConsumeQueue呢?

首先生产者发送消息:生产者发送消息 --> Broker接收 --> 消息追加到CommitLog末尾 --> 返回成功

2

Broker后台有一个ReputMessageService线程,实时监测CommitLog的新内容。
对于CommitLog中的每条新消息,这个服务会:
1、解析消息,得知它属于哪个Topic的哪个Queue(消息头中有此信息)
2、向对应的ConsumeQueue文件追加一个索引条目(包含CommitLog偏移量等)

3

消费者要消费TopicA-Queue0的消息
–> 查询TopicA-Queue0对应的ConsumeQueue文件
–> 读取索引条目,得到消息在CommitLog中的位置
–> 根据CommitLog偏移量,直接到CommitLog文件中读取真实消息内容
–> 返回给消费者

二、CommitLog里面存的是?

[消息总长度][主题长度][主题名称"OrderTopic"][QueueId=2][其他属性...][消息体"订单消息体"]

三、那么一条消息,保存在CommitLog,怎么体现出他在TopIc下的哪个Queue ?

CommitLog的每条消息,都会记录这条消息属于哪个topic、QueueId,因为根据TopIc和QueueId可以找到属于哪个ConsumeQueue。

[消息总长度][主题长度][主题名称"OrderTopic"][QueueId=2][其他属性…][消息体"订单消息体"]

四、一个Topic中,QueueId和ConsumeQueue是一一对应的?

是的,一个Topic下,QueueIdConsumeQueue是严格一一对应的关系。

五、消费消息,怎么记录消费到哪?

1、集群模式(CLUSTERING) - 主流模式

在集群模式下,消费进度由Broker集中管理和存储。工作流程:

Consumer消费消息:消费者从Broker拉取一批消息(如20条)进行消费
Consumer处理成功:消费者成功处理完这批消息后
Consumer提交Offset:消费者向Broker发送提交请求,告知"我已处理到第X条"
Broker记录Offset:Broker将进度持久化到磁盘文件consumerOffset.json中

消费记录在Broker端存储,在Broker服务器的磁盘上,Offset信息存储包含:

{"offsetTable": {"TopicA@ConsumerGroupA": {"0": 15678,  // TopicA的队列0,消费到第15678条"1": 14233,  // TopicA的队列1,消费到第14233条"2": 16891   // TopicA的队列2,消费到第16891条},"TopicB@ConsumerGroupB": {"0": 8921,"1": 7543}}
}

注意:记录中存的是Queue上,不是Consumer,因为Queue和Consumer是对应的,而且Consumer一直会变。

2、广播模式(BROADCASTING)

在广播模式下,每个Consumer实例独立管理自己的消费进度,通常存储在本地文件中。

Consumer本地存储,每个消费者实例在本地文件系统存储:
$USER_HOME/.rocketmq_offsets/{消费者组}/{Broker名称}/{QueueId}/offset.json

http://www.dtcms.com/a/613899.html

相关文章:

  • 如何在建设银行网站预约纪念币黄石有哪些做视觉网站的公司
  • 手机购物网站模板如何做好专业类网站
  • 帮企业建网站wordpress google open sans
  • AI 基础与应用开发专栏搬家说明
  • GeoSeg 框架解析
  • 预训练语言模型(Pre-trained Language Model, PLM)介绍
  • 免费域名注册网站怎么登录网站运营一个月多少钱
  • 抚顺市营商环境建设局网站公众号后台登录
  • Vue2 学习记录--路由
  • Spring Boot 热部署
  • 非易失性存储器·W25Q64使用手册解读
  • 网站统计关键词重庆市建设局网站
  • 分布式缓存技术选型指南
  • mysql主从复制配置
  • html网站模板建站手机建网站推广
  • Vue 项目实战《尚医通》,预约挂号的路由与静态搭建,笔记36
  • 网站建设 风险防控网站首页的head标签内
  • 多用户跨学科交流系统(3):评论模块与 Spring Boot 全局异常处理
  • 前后端分离部署学之思在线考试系统
  • 在树莓派4B上部署ONNX格式的YOLOv8-Pose
  • websocket和传统socket有何差别?是属于一个子集还是完全不同?
  • 双指针问题2(c++)
  • 龙岩市城乡规划建设局网站三只松鼠的网络营销方式
  • Docker容器使用手册——入门篇(上)
  • C语言编译器网页版 | 轻松编写与调试C语言程序
  • QT注册自定义类相关的两个用法
  • 进程间关系(linux)
  • WordPress外贸成品网站的免费获取渠道
  • 经典算法题之汉明距离(二)
  • 公司注册网站模板上杭网站设计