1、Producer.star()启动时,主要调用了以下的5个类,从上到下表示调用的先后顺序。
2、从主函数Producer开始,先初始化一个DefaultMQProducer类的producer对象,需要给定producerGroup名和nameServer的地址(我这里为"10.61.2.123:9876;10.61.2.124:9876")。这里初始化的主要内容是初始化自己的prodecerGroup的值,以及DefaultMQProducerImpl类的对象defaultMQProducerImpl。
3、producer.start()调用成员对象defaultMQProducerImpl的start方法。
- start方法首先根据defaultMQProducerImpl的serviceState进行跳转,它最开始为CREATE_JUST,执行其它命令前先更改为START_FAILED;
- 执行checkConfig()函数,针对producerGroup是否为空,是否占用默认的groupName等一系列的验证。包括producerGroup不能为空以及不能为MixAll中默认的设定值“DEFAULT_PRODUCER”;
- 当producer的instanceName为默认值(即"rocketmq.client.name"为"DEFAULT")时,把instanceName改为pid;
- <