源码分析RocketMQ消息轨迹】的更多相关文章

目录 1.发送消息轨迹流程 1.1 DefaultMQProducer构造函数 1.2 SendMessageTraceHookImpl钩子函数 1.3 TraceDispatcher实现原理 2. 消息轨迹数据如何存储 2.1 使用系统默认的主题名称 2.2 用户自定义消息轨迹主题 本文沿着<RocketMQ消息轨迹-设计篇>的思路,从如下3个方面对其源码进行解读: 发送消息轨迹 消息轨迹格式 存储消息轨迹数据 @(本节目录) 1.发送消息轨迹流程 首先我们来看一下在消息发送端如何启用消息轨…
rocketmq在存储消息的时候,最终是通过mmap映射成磁盘文件进行存储的,本文就消息的存储流程作一个整理.源码版本是4.9.2 主要的存储组件有如下4个: CommitLog:存储的业务层,接收"保存消息"的请求 MappedFile:存储的最底层对象,一个MappedFile对象就对应了一个实际的文件 MappedFileQueue:管理MappedFile的容器 AllocateMappedFileService:异步创建mappedFile的服务 对于rocketmq来说,存…
目录 1.DLedgerEntryPusher 1.1 核心类图 1.2 构造方法 1.3 startup 2.EntryDispatcher 详解 2.1 核心类图 2.2 Push 请求类型 2.3 doWork 方法详解 3.EntryHandler 详解 3.1 核心类图 3.2 handlePush 3.3 doWork 方法详解 4.QuorumAckChecker 4.1 类图 4.2 doWork 详解 温馨提示:源码分析RocketMQ DLedger 多副本系列连载中: 1.…
目录 1.BrokerController#initialAcl 2.PlainAccessValidator 2.1 类图 2.2 构造方法 2.3 parse方法 2.4 validate 方法 3.PlainPermissionLoader 3.1 类图 3.2 PlainPermissionLoader构造方法 3.3 load 3.4 watch 3.5 validate 4.AclClientRPCHook 4.1 doBeforeRequest 有关RocketMQ ACL的使用请…
目录 1.DLedger 存储相关类图 1.1 DLedgerStore 1.2 DLedgerMemoryStore 1.3 DLedgerMmapFileStore 2.DLedger 存储 对标 RocketMQ 存储 3.DLedger 数据存储格式 4.DLedger 索引存储格式 5.思考 @(本节目录) RocketMQ DLedger 的存储实现思路与 RocketMQ 的存储实现思路相似,本文就不再从源码角度详细剖析其实现,只是点出其实现关键点.我们不妨简单回顾一下 Commi…
温馨提示:本文基于 Kafka 2.2.1 版本.本文主要是以源码的手段一步一步探究消息发送流程,如果对源码不感兴趣,可以直接跳到文末查看消息发送流程图与消息发送本地缓存存储结构. 从上文 初识 Kafka Producer 生产者,可以通过 KafkaProducer 的 send 方法发送消息,send 方法的声明如下: Future<RecordMetadata> send(ProducerRecord<K, V> record) Future<RecordMetada…
目录 1.KafkaConsumer poll 详解 2.Fetcher 类详解 本节重点讨论 Kafka 的消息拉起流程. @(本节目录) 1.KafkaConsumer poll 详解 消息拉起主要入口为:KafkaConsumer#poll方法,其声明如下: ~java public ConsumerRecords<K, V> poll(final Duration timeout) { // @1 return poll(time.timer(timeout), true); // @…
目录 1.DLedger关于选主的核心类图 1.1 DLedgerConfig 1.2 MemberState 1.3 raft协议相关 1.4 DLedgerRpcService 1.5 DLedgerLeaderElector 1.6 DLedgerServer 2.源码分析Leader选举 2.1 DLedgerLeaderElector 类图 2.2 启动选举状态管理器 2.3 选举状态机状态流转 2.4 投票与投票请求 2.5 心跳包与心跳包响应 温馨提示:<RocketMQ技术内幕>…
使用rocketmq的大体消息发送过程如下: 在前面已经分析过MQ的broker接收生产者客户端发过来的消息的过程,此文主要讲述订阅者获取消息的过程,或者说broker是怎样将消息传递给消费者客户端的,即上面时序图中拉取消息(pull message)动作.. 1. 如何找到入口(MQ-broker端) 分析一个机制或者功能时,我们首先希望的是找到入口,前一篇我们是通过端口号方式顺藤摸瓜的方式找到了入口.但是此篇略微不同,涉及到consumer客户端与broker的两边分析,最终发现逻辑还是比较…
Futuresend(ProducerRecord<K, V> record) Futuresend(ProducerRecord<K, V> record, Callback callback) 从上面的 API 可以得知,用户在使用 KafkaProducer 发送消息时,首先需要将待发送的消息封装成 ProducerRecord,返回的是一个 Future 对象,典型的 Future 设计模式.在发送时也可以指定一个 Callable 接口用来执行消息发送的回调. 我们在学习…