rocketmq 生产者启动流程源码分析
1.生产者启动入口,传入生产者组名创建一个生产者对象,实质会创建一个DefaultMQProducerImpl子类对象。
2.调用子类的流程启动方法。生产者创建时会根据是否开启消息轨迹创建消息轨迹处理对象
3.校验生产者组,创建MQClientInstance对象,并将生产者交由其管理。最终调用MQClientInstance对象start方法
4.生产者流程启动的真正方法。通过startScheduledTask()启动多个定时任务线程。包括namesrv集群地址的获取,topic路由信息,定时心跳检测等信息
5 先从生产者中收集所要发送的主题:Topic,然后遍历Topic列表,调用updateTopicRouteInfoFromNameServer(topic)获取每个Topic的路由信息。
6.下面来看看截取的部分代码片段updateTopicRouteInfoFromNameServer(topic):首先去去namesrv端获取topic的路由信息,然后本地进行缓存。并将获取的路由信息数据转换成所需的数据对象。