}
@Override
public ConsumerRunningInfo consumerRunningInfo() {
ConsumerRunningInfo info = new ConsumerRunningInfo();
// 各种配置及运行数据
Properties prop = MixAll.object2Properties(this.defaultMQPushConsumer);
prop.put(ConsumerRunningInfo.PROP_CONSUME_ORDERLY, String.valueOf(this.consumeOrderly));
prop.put(ConsumerRunningInfo.PROP_THREADPOOL_CORE_SIZE,
String.valueOf(this.consumeMessageService.getCorePoolSize()));
prop.put(ConsumerRunningInfo.PROP_CONSUMER_START_TIMESTAMP,
String.valueOf(this.consumerStartTimestamp));
info.setProperties(prop);
// 订阅关系
Set<SubscriptionData> subSet = this.subscriptions();
info.getSubscriptionSet().addAll(subSet);
// 消费进度、Rebalance、内部消费队列的信息
Iterator<Entry<MessageQueue, ProcessQueue>> it =
this.rebalanceImpl.getProcessQueueTable().entrySet().iterator();
while (it.hasNext()) {
Entry<MessageQueue, ProcessQueue> next = it.next();
MessageQueue mq = next.getKey();
ProcessQueue pq = next.getValue();
ProcessQueueInfo pqinfo = new ProcessQueueInfo();
pqinfo.setCommitOffset(this.offsetStore.readOffset(mq, ReadOffsetType.MEMORY_FIRST_THEN_STORE));
pq.fillProcessQueueInfo(pqinfo);
info.getMqTable().put(mq, pqinfo);
}
// RT、TPS统计
for (SubscriptionData sd : subSet) {
ConsumeStatus consumeStatus =
this.mQClientFactory.getConsumerStatsManager().consumeStatus(this.groupName(),
sd.getTopic());
info.getStatusTable().put(sd.getTopic(), consumeStatus);
}
return info;
}