1 向Broker发送心跳消息
1、初始化HeartbeatData对象,将该Producer或Consumer的ClientID赋值给HeartbeatData对象的clientID变量;
2、遍历MQClientInstance.consumerTable: ConcurrentHashMap<String/* group */, MQConsumerInner>变量,根据每个MQConsumerInner对象的值初始化ConsumerData对象(包括GroupName、consumeType、MessageModel、consumeFromWhere、rebalanceImpl变量中的RebalanceImpl. subscriptionInner值初始化subscriptionDataSet:Set<SubscriptionData>变量、UnitMode),并将该对象放入HeartbeatData对象的ConsumerData集合变量consumerDataSet:Set<ConsumerData>中;
3、遍历MQClientInstance.producerTable: ConcurrentHashMap<String/* group */, MQProducerInner>变量;根据每条记录的ProducerGroup值初始化ProducerData对象,并放入HeartbeatData对象的ProducerData集合变量producerDataSet:Set<ProducerData>中;
4、若ConsumerData集合和ProducerData集合都为空,说明没有consumer或produer,则不发送心跳信息;
5、若不是都为空,则遍历MQClientInstance.brokerAddrTable列表,向每个Broker地址发送请求码为H