基于RocketMQ-4.9.0的RocketMQ-4.9.0分析
请参阅官方文件,主要负责消息的存储,交付和查询以及服务高可用性保证。为了实现这些功能,经纪人包含以下重要的子模块。
知道入口,我们将分析它的开始方式,以及您在启动过程中做什么?从上面的某些代码中,不难看到它是第一个创建对象的一个,然后调用启动方法。逐步进行以查看详细信息。
当我们分析名称服务器的启动时,它首先创建了一个对象,然后启动了调用方法。
变成简化,仅留下一些更重要的代码
}
创建代理配置对象,Netty客户端和服务器配置对象以及存储对象的配置
1. BrokerConfig:存储经纪人的配置,其中有很多内容。简要介绍一下
2.NettyServerConfig和NetTyClientConfig:保存Netty的配置,并设置通信端口的固定10911
3. Messagestoreconfig:设置消息存储的一些配置,让我们简单看一下
启动时在经纪人上指定的Broker.conf配置文件,并将配置信息映射到上面的配置类
还有其他一些配置
通过构造参数,将上面创建的上面创建的4个配置类对象进入类。
// 去做 ........
}
让我们简单地分析加载主题配置信息的示例
创建默认消息存储对象
并不难发现当对象构造时,内部也有很多对象。
其核心的核心内容是三个对象的负载
大概要读取目录映射文件中的所有消息文件。根据文件名进行排序后,记录每个映射文件的写作位置,然后将其放入对象的对象的集合中
大概要读取目录中的所有目录(每个目录名称都是主题),然后遍历所有目录(主题),然后继续遍历主题下的所有目录(此目录名称为queueid),然后thencreatee一个对象并将其保存在对象的对象中。
注意:创建对象时,它也将在内部创建对象,并且在内部保留许多对象。这与创建对象的时间相同。
然后调用完全相同的逻辑的方法。
这个对象似乎彼此了解吗?是的,我们还在观看名称服务器启动时还创建了此对象。
我们继续看到构造函数
总结创建对象时所做的事情
让我们看一下注册方法:
注册时我们在做什么?
注册是在对象表中编写处理器。这样,可以获得不同的业务代码。
}
object1 =处理器,object2 =线程池
这里将有很多计时任务,我将举一个持续性comsumer偏移的示例:一个例子:
消费者每5秒抵消默认存储路径:在文件中
我们查看其内部实施:
}
当我们看到名称服务器开始时,我看到它也创建了这个对象。唯一的区别是配置参数是不同的。例如,端口绑定为10911,端口绑定为9876。不难发现此方法确实启动了NetTy服务器,只需总结注意点
它是对象的启动。
严格地说,这里没有客户端,但只有客户端需要的必要参数。在特定呼叫时与服务器建立连接(例如,在调用特定注册方法时,注册到名称服务器时,建立了侧面)。
}
原来的;https://juejin.cn/post/70974977729546248