1

简介

生产者启动流程指的是new一个producer实例,调用producer.start()方法的过程。启动过程最主要是创建MQClientInstance实例,该类封装了RocketMQ网络处理API,为后续消息发送创建网络通道。

DefaultMQProducer producer = new DefaultMQProducer("group_name");
producer.setNamesrvAddr("127.0.0.1:9876");
producer.start();

生产者启动流程

producer.start()实际调用了defaultMQProducerImpl.start(),我们从defaultMQProducerImpl.start()方法来跟踪。

1、检查productGroup是否符合要求;并改变生产者instanceName为进程ID。
image.png

2、创建MQClientInstance实例。同一个clientId只会创建一个MQClientInstance。
image.png

image.png

clientID为客户端IP + instance + (unitname可选),如果在同一台物理服务器部署2个应用程序,那clientId岂不是相同,为了避免这个问题,便有了第1步中改变生产者instanceName为进程ID,这样就避免了不同进程的相互影响。

MQClientInstance封装了RocketMQ网络处理API,负责底层网络通道的处理。

3、调用MQClientInstance的start方法启动MQClientInstance,如果已经启动,则本次启动不会真正执行。
image.png


bugDesigner
22 声望3 粉丝