调用MQClientInstance.start方法启动MQClientInstance对象;大致逻辑如下:
1、检查MQClientInstance.ServiceState的状态(初始化状态为ServiceState.CREATE_JUST);只有状态为CREATE_JUST时才启动该Producer;其他状态均不执行启动过程;
2、将MQClientInstance的ServiceState置为start_failed,以免重复启动;
3、检查是否设置了NameServer的地址(在启动Producer之前在应用层设置ClientConfig.namesrvAddr),若没有则从地址服务器找Name Server地址,地址服务器的路径是"http://" +WS_DOMAIN_NAME+":8080/rocketmq/"+WS_DOMAIN_SUBGROUP;其中WS_DOMAIN_NAME为system.property配置参数rocketmq.namesrv.domain的值,WS_DOMAIN_SUBG为system.property配置参数rocketmq.namesrv.domain.subgroup的值;
4、调用MQClientAPIImpl.start方法:首先调用MQClientAPIImpl. remotingClient方法,启动Netty客户端;然后以PROJECT_CONFIG为NameSpace,本地IP为key值向NameServer发送GET_KV_CONFIG请求,获取前缀赋值给MQClientAPIImpl.projectGroupPrefix变量;
5、设置各类定时任务: