消费者组、链路类型、异常描述
看下链路类型:
org.apache.rocketmq.tools.admin.api.TrackType
public enum TrackType {
CONSUMED,
CONSUMED_BUT_FILTERED,
PULL,
NOT_CONSUME_YET,
NOT_ONLINE,
UNKNOWN
}
是一个枚举类:包括
消费、消费失败、拉取、未消费、未上线、未知
根据一个枚举类来描述链路类型
看到这儿基本DefaultMQAdminExt这个类也结束了
回到我们的起点 tools包
基本tools包就随着这个类过差不多了
再看下broker包
broker
从入口controller看起
org.apache.rocketmq.broker.BrokerController
前面的声明和构造方法就略过了
直接看下初始化
public boolean initialize() throws CloneNotSupportedException {
boolean result = this.topicConfigManager.load();
result = result && this.consumerOffsetManager.load();
result = result && this.subscriptionGroupManager.load();
result = result && this.consumerFilterManager.load();
首先是初始化 消费者进度管理consumerOffsetManager、订阅组管理subscriptionGroupManager、
消费过滤器管理consumerFilterManager
如果初始化成功:
if (result) {
try {
this.messageStore =
new DefaultMessageStore(this.messageStoreConfig, this.brokerStatsManager, this.messageArrivingListener,
this.brokerConfig);
if (messageStoreConfig.isEnableDLegerCommitLog()) {
DLedgerRoleChangeHandler roleChangeHandler = new DLedgerRoleChangeHandler(this, (DefaultMessageStore) messageStore);
((DLedgerCommitLog)((DefaultMessageStore) messageStore).getCommitLog()).getdLedgerServer().getdLedgerLeaderElector().addRoleChangeHandler(roleChangeHandler);
}
this.brokerStats = new BrokerStats((DefaultMessageStore) this.messageStore);
//load plugin
MessageStorePluginContext context = new MessageStorePluginContext(messageStoreConfig, brokerStatsManager, messageArrivingListener, brokerConfig);
this.messageStore = MessageStoreFactory.build(context, this.messageStore);
this.messageStore.getDispatcherList().addFirst(new CommitLogDispatcherCalcBitMap(this.brokerConfig, this.consumerFilterManager));
} catch (IOException e) {
result = false;
log.error("Failed to initialize", e);
}
}