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