![](https://img-blog.csdnimg.cn/direct/c6e3d7a37582448fa3920c0116ea7a28.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
rocketmq源码解析
文章平均质量分 94
rocketmq源码解析,包括rocketmq的基本框架,nameserver架构设计与启动流程源码解析、生产者消息发送源码解析,消息存储、异步刷盘、消费源码解析,最后附上相关面试题,一站式帮你搞定rocketmq
专业的程序员
十五年开发经验,10年互联网老兵,曾担任旺旺集团核心开发课副课长兼架构师,在多家互联昂企业中但是架构师、开发组长等职位。喜欢钻研技术,喜欢分享经验
展开
-
RocketMq源码解析八:实时更新消息消费队列与索引文件
消息消费队文件、消息属性索引文件都是基于CommitLog文件构建的,当消息生产者提交的消息存储在CommitLog文件中,ConsumerQueue、indexFile需要及时更新,否则消息无法及时被消费,根据消息属性查找消息也会出现较大延迟。RocketMQ通过开启一个线程ReputMessageservice来准实时转发Commitlog文件更新事件,相应的任务处理器根据转发的消息及时更新ConsumerQueue、indexFile文件。原创 2024-06-19 09:50:27 · 12 阅读 · 0 评论 -
RocketMq源码解析六:消息存储
我们针对源码来看下消息存储的流程,这里主要说明内存写入的过程,刷盘的机制在后面再讲。原创 2024-06-10 22:01:53 · 85 阅读 · 0 评论 -
RocketMq源码解析七:消息存储文件映射
RocketMQ通过使用内存映射文件提高!0访问性能,无论是CommitLog、ConsumerQueue还是IndexFile,单个文件都被设计为固定长度,如果一个文件写满以后再创建一个新文件,文件名就为该文件第一条消息对应的全局物理偏移量。我们看下一个commitLog文件大小是1GB一个comsumerQueue文件大小是5.72MB一个indexFile文件大小是 400MB。原创 2024-06-05 17:25:17 · 15 阅读 · 0 评论 -
RocketMq源码解析五:生产者Producer发送消息
消息发送的过程可以分成四步,分别是验证消息、查找路由、选择队列、发送消息验证消息:检查msg、检查topic、检查body;查找路由:先查本地缓存,如果为空从namesrv中获取并更新;选择队列:使用index+1再取模的方式进行负载均衡选择队列;发送消息:最终通过NettyRemotingClient发送请求。原创 2024-06-05 17:24:38 · 133 阅读 · 0 评论 -
RocketMq源码解析四:生产者Producer启动
生产者服务核心接口和类的关系如下图所示:MQProducer是生产者解耦,这里找几个有代表性的方法// 同步发送消息// 同步超时发送消息 如果超过了timeout的时间就抛出异常//异步发送消息// 异步超时发送消息 如果超过了timeout的时间就抛出异常// 指定消息队列同步发送消息。原创 2024-05-27 09:50:39 · 34 阅读 · 0 评论 -
RocketMq源码解析三:路由管理
Nameserver的主要作用是为消息的生产者和消息消费者提供关于主题Topic的路由信息,那么Nameserver需要存储路由的基础信息,还要管理Broker节点,包括路由注册、路由删除等。原创 2024-05-27 09:48:38 · 145 阅读 · 0 评论 -
RocketMq源码解析二:NameService篇(启动流程)
首先来看一章总体的技术架构图消息中间件的设计思路一般是基于主题订阅发布的机制,消息生产者(Producer)发送某一个主题到消息服务器,消息服务器负责将消息持久化存储,消息消费者(Consumer)订阅该兴趣的主题,消息服务器根据订阅信息(路由信息)将消息推送到消费者(Push模式)或者消费者主动向消息服务器拉去(Pu模式),从而实现消息生产者与消息消费者解耦。为了避免消息服务器的单点故障导致的整个系统瘫痪,通常会部署多台消息服务器共同承担消息的存储。那消息生产者如何知道消息要发送到哪台消息服务器呢?原创 2024-05-21 15:49:33 · 153 阅读 · 0 评论 -
RocketMq源码解析一:源码结构介绍
从本章开始我们对Rocketmq的源码进行解析。使用版本是4.9.8。原创 2024-05-21 15:48:42 · 47 阅读 · 0 评论