RocketMQ-4.9.0分析有三种类型。有三种类型
}
如前所述,当客户端发送消息时,将构建Netty请求命令,因此服务器如何定义?当Broker()启动时,将调用初始化方法,并且许多处理器将在内部注册,并且会有一条消息发送消息。
处理器收到生产者的发送请求后
建立服务器消息对象,设置主题,排序,消息内容正文和标签等(标签设置为属性属性),然后调用对象的方法put messages
继续调用对象方法放消息
在保存消息之前,该方法将主要执行两件事
向缓冲区发送消息以解释几个参数
}
主要做3件重要的事情
commitlog在一个名为“主题Queuid”的地图中,值为“主题”。因此,该怎么做是根据密钥来偏移,并且第一次获得它必须为空,然后是0l。消息写在缓冲区中后,办公室会自动添加1,将在后面提到。,继续下降)
如果经纪人重新启动,则将在开始时进行更新
如果您不能在文件末尾编写它,请创建一个新的映射文件,然后将其重写为消息
将写入缓冲区的内容很多,总共17个是消息的总大小。queueID,主题和消息物理偏移物理offyoft,oblemquequeue的offset queueOffset(queueOffset为2.3.1 maintenance消息索引索引值,queueOffset * 20byte可以将实际位置定位在CubsumeQueue中)
编写缓冲区的内容
当消息写入缓冲区时,值偏移++的值
稍后分发索引单元的消息将使用此偏移。
Wroteposition将记录绘图文件的写作
提交刷子请求
当Broker()启动时,将启动一个异步线程任务,该任务将在Commitlog中读取消息,然后创建一个索引单元
核心代码
您阅读了几条消息?
如前所述,当消息写入缓冲区时,对象的属性将记录写作的位置,然后是[dectlogogfset,wrotepostion.get()]在提交词的读取消息中[start,end]]之后阅读消息,开始遍历消息,然后分发
消息分发有两个部分,一个是针对构建的消费者索引的消费者,另一个是根据新闻构建的索引。
消息消费者队列的目的主要是提高消息消耗的性能。由于RocketMQ基于主题订阅模式,因此消息消耗是为主题。根据提示文件文件中的主题检索检索消息非常低效。消费者可以根据使用的消费量找到要消耗的消息。它们是消费者的索引(逻辑消费者队列)作为消费者消息的索引,它保留了初始物理偏移量在提示件中的commitlog中的队列消息的抵消,消息大小和消息标签的障碍值。CONSUMEMEQUEUE文件可以看作是主题commitlog索引索引文件
3.2.1.1分配过程
}
3.2.1.2当经纪人开始时,连续的消费将开始持续服务
每1秒执行持久任务,然后在相应主题下的queueID下的文件中写下默认存储路径:$ home/store/store/oblemequeue/{topic}/{queueid}/{fileName}
indexfile(索引文件)提供了一种通过键或时间间隔查询消息的方法
}
从代码中发现,索引拧紧仅当前索引文件已满,这并不难找到。
3.2.2.2检查是否需要创建索引
3.2.2.3保存索引
当PUT索引单元时,有必要理解索引文件的组成
PUT的核心逻辑:
请参阅对索引和插槽之间关系的理解
和插图索引写作过程
他一直在积累消息分布和偏移。一条消息发送。
本文主要取决于生产者如何从代码的角度发送消息,服务器代理如何接收消息并存储消息,耐用消息和消息分发(构造索引)。
好的,只要在这里写!
仅限于作者的水平,文本中有不可避免的事情。欢迎校正,不要喷洒,谢谢