Filter system topic while console dashboard was making topic statistics (#642)
Co-authored-by: zhangjidi2016 <zhangjidi@cmss.chinamobile.com>
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
index 329d8c9..7fc0fb2 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
@@ -23,6 +23,7 @@
import org.apache.rocketmq.common.protocol.body.TopicList;
import org.apache.rocketmq.common.protocol.route.BrokerData;
import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.common.topic.TopicValidator;
import org.apache.rocketmq.console.aspect.admin.annotation.MultiMQAdminCmdMethod;
import org.apache.rocketmq.store.stats.BrokerStatsManager;
import org.apache.rocketmq.tools.admin.MQAdminExt;
@@ -73,16 +74,19 @@
if (!rmqConfigure.isEnableDashBoardCollect()) {
return;
}
+
Date date = new Date();
Stopwatch stopwatch = Stopwatch.createUnstarted();
try {
TopicList topicList = mqAdminExt.fetchAllTopicList();
Set<String> topicSet = topicList.getTopicList();
+ this.addSystemTopic();
for (String topic : topicSet) {
- if (topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX) || topic.startsWith(MixAll.DLQ_GROUP_TOPIC_PREFIX)) {
+ if (topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX)
+ || topic.startsWith(MixAll.DLQ_GROUP_TOPIC_PREFIX)
+ || TopicValidator.isSystemTopic(topic)) {
continue;
}
-
TopicRouteData topicRouteData = mqAdminExt.examineTopicRouteInfo(topic);
GroupList groupList = mqAdminExt.queryTopicConsumeByWho(topic);
@@ -319,5 +323,17 @@
}
return newTpsList;
}
-
+
+ private void addSystemTopic() throws Exception {
+ ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+ HashMap<String, Set<String>> clusterTable = clusterInfo.getClusterAddrTable();
+ for(Map.Entry<String, Set<String>> entry : clusterTable.entrySet()){
+ String clusterName = entry.getKey();
+ TopicValidator.addSystemTopic(clusterName);
+ Set<String> brokerNames = entry.getValue();
+ for (String brokerName : brokerNames) {
+ TopicValidator.addSystemTopic(brokerName);
+ }
+ }
+ }
}