RocketMQ生产者源码启动流程
2025-02-12 19:51:40 0 举报
一文读懂RocketMQ生产者源码启动流程
作者其他创作
大纲/内容
NettyRemotingClient
getOrCreateMQClientInstance
再次调用DefaultMQProducerImpl中的start(false)方法
start方法
开启拉取消息服务线程PullMessageService
DefaultMQProducerImpl
SHUTDOWN_ALREADY
MQClientInstance
后设置serviceState为RUNNING
创建clientId
第一次走这里,startFactory为true时
也是本地缓存
检查配置
开启Netty远程客户端连接
(饿汉单例模式)
startFactory为false时
CREATE_JUST(初始值)
switch根据不同的serviceState走不同的逻辑
初始化生产者累加器ProduceAccumulator
RUNNING
源码中生产者启动案例为入口org.apache.rocketmq.example.quickstart.Producer
startFactory为false
同时将两个类中的serviceState值为RUNNING状态
start()
单例MQClientManager
DefaultMQProducer
PullMessageService
MQClientInstance一样逻辑
初始化topic路由信息
START_FAILED
客户端本地缓存能拿到MQClientInstance?
返回新创建的实例
MQClientAPIImpl
开启重平衡线程RebalanceService
将生产者注册到生产者组中
本地缓存存在,直接返回
start()方法
开启多个定时线程池任务
先设置serviceState为RUNNING
实例化MQClientInstance
0 条评论
下一页