基于RocketMQ-4.9.0的RocketMQ-4.9.0分析
在RocketMQ中,该消息的消息如下,每个消息将具有相应的索引信息。消费者通过第二级用途索引读取消息的物理内容。该过程如下:下面:
写出消息后,RocketMQ将分配物理偏移(用于放置消息)以通过异步线中和。
用途:消息消耗队列,引言的目的是提高消息消耗的性能。因为RocketMQ基于主题主题订阅模式。新闻消费是为主题。EssenceConsumer可以根据用途的方式找到要消费的消息。它们作为消费者消息的索引,填充(逻辑消费者队列)作为消费者的索引,它保留了在commitlog中的最初物理偏移量,该索引的最初物理偏移偏移量。COMMITLOG,消息大小和消息标签的哈希码值。
indexfile:indexfile(索引文件)提供了一种可以通过键或时间间隔查询消息的方法
让我们简要查看与经纪人启动过程中的消息分布相关的过程:
我们继续看到的内部实施:
// todo:标记消息分布的起始位置是分布此。从cillsLog中分配此.reputmessagesagesagesesvice.setReputfromoffset。
this.Recovertopicqueuetable();
}
让我们看一下方法:
这是一个内部班级
}
这种方法的内容很多,我们仍然简单地总结:
我们继续单击以查看其内部实现:
创建对象时,将创建两个内部创建
我们继续关注内部实施:
首先是基于主题和queueid获取消耗对象。然后调用该方法
然后,我们继续研究其内部实施:
总结写作过程:
我们继续研究其内部实施:
在这里,我们简单地总结了:
接下来,我们查看其核心逻辑:
这里的逻辑比消费量复杂得多。让我们首先解释索引文件的组成
我使用图来解释索引文件的过程来构建索引:
就个人而言,尽管该指数指数比消费量更为复杂,但它足以知道,因为它的影响根本不像消费量那样强,但重点是了解Cunsumequeue索引。
本文讲述了经纪人消息分布的过程。SO称为的分布是将消息写入用于构建填充和索引文件的索引中,以促进消费者快速消费。
消息分布是一个独立的异步线程:,该线程将实时读取Commitlog中的消息,然后将消息的物理偏移(消息的物理偏移量)(可以位于物理消息中)为和平。
好吧,让我们在这里写信。
仅限于作者的个人层面,文章中有不可避免的事情,欢迎纠正!不要喷洒,谢谢
原始:https://juejin.cn/post/7098545135306145823