mirror of
https://github.com/apache/rocketmq-dashboard.git
synced 2026-02-19 11:15:41 +08:00
* [ISSUE #19]Message track query enhancement * traceTopic can be null and system Topic is used by default * add unit test * select messageTrack topic in messageTrace page Co-authored-by: zhangjidi <zhangjidi@cmss.chinamobile.com>
This commit is contained in:
@@ -105,5 +105,8 @@ var en = {
|
||||
"NO_DATA":"Don't have ",
|
||||
"SYSTEM":"SYSTEM",
|
||||
"WELCOME":"Hi, welcome using RocketMQ Dashboard",
|
||||
"ENABLE_MESSAGE_TRACE":"Enable Message Trace"
|
||||
"ENABLE_MESSAGE_TRACE":"Enable Message Trace",
|
||||
"MESSAGE_TRACE_DETAIL":"Message Trace Detail",
|
||||
"TRACE_TOPIC":"TraceTopic",
|
||||
"SELECT_TRACE_TOPIC":"selectTraceTopic"
|
||||
}
|
||||
@@ -106,5 +106,8 @@ var zh = {
|
||||
"NO_DATA":"不存在 ",
|
||||
"SYSTEM":"系统",
|
||||
"WELCOME":"您好,欢迎使用RocketMQ仪表盘",
|
||||
"ENABLE_MESSAGE_TRACE":"开启消息轨迹"
|
||||
"ENABLE_MESSAGE_TRACE":"开启消息轨迹",
|
||||
"MESSAGE_TRACE_DETAIL":"消息轨迹详情",
|
||||
"TRACE_TOPIC":"消息轨迹主题",
|
||||
"SELECT_TRACE_TOPIC":"选择消息轨迹主题"
|
||||
}
|
||||
@@ -29,7 +29,7 @@ module.controller('messageController', ['$scope', 'ngDialog', '$http', 'Notifica
|
||||
method: "GET",
|
||||
url: "topic/list.query",
|
||||
params: {
|
||||
skipSysProcess: 'true'
|
||||
skipSysProcess: true
|
||||
}
|
||||
}).success(function (resp) {
|
||||
if (resp.status == 0) {
|
||||
|
||||
@@ -26,9 +26,13 @@ const TIME_FORMAT_PATTERN = "YYYY-MM-DD HH:mm:ss.SSS";
|
||||
const DEFAULT_DISPLAY_DURATION = 10 * 1000
|
||||
// transactionTraceNode do not have costTime, assume it cost 50ms
|
||||
const TRANSACTION_CHECK_COST_TIME = 50;
|
||||
const RETRY_GROUP_TOPIC_PREFIX = "%RETRY%";
|
||||
const DLQ_GROUP_TOPIC_PREFIX = "%DLQ%";
|
||||
module.controller('messageTraceController', ['$scope', '$routeParams', 'ngDialog', '$http', 'Notification', function ($scope, $routeParams, ngDialog, $http, Notification) {
|
||||
$scope.allTopicList = [];
|
||||
$scope.selectedTopic = [];
|
||||
$scope.allTraceTopicList = [];
|
||||
$scope.selectedTraceTopic = [];
|
||||
$scope.key = "";
|
||||
$scope.messageId = $routeParams.messageId;
|
||||
$scope.queryMessageByTopicAndKeyResult = [];
|
||||
@@ -39,16 +43,25 @@ module.controller('messageTraceController', ['$scope', '$routeParams', 'ngDialog
|
||||
method: "GET",
|
||||
url: "topic/list.query",
|
||||
params: {
|
||||
skipSysProcess: "true"
|
||||
skipSysProcess: true
|
||||
}
|
||||
}).success(function (resp) {
|
||||
if (resp.status == 0) {
|
||||
$scope.allTopicList = resp.data.topicList.sort();
|
||||
console.log($scope.allTopicList);
|
||||
console.log($scope.allTopicList)
|
||||
for (const topic of $scope.allTopicList) {
|
||||
if (topic.startsWith(RETRY_GROUP_TOPIC_PREFIX)
|
||||
|| topic.startsWith(DLQ_GROUP_TOPIC_PREFIX)) {
|
||||
continue;
|
||||
}
|
||||
$scope.allTraceTopicList.push(topic);
|
||||
}
|
||||
console.log($scope.allTraceTopicList)
|
||||
} else {
|
||||
Notification.error({message: resp.errMsg, delay: 2000});
|
||||
}
|
||||
});
|
||||
|
||||
$scope.timepickerBegin = moment().subtract(1, 'hour').format('YYYY-MM-DD HH:mm');
|
||||
$scope.timepickerEnd = moment().add(1, 'hour').format('YYYY-MM-DD HH:mm');
|
||||
$scope.timepickerOptions = {format: 'YYYY-MM-DD HH:mm', showClear: true};
|
||||
@@ -99,7 +112,7 @@ module.controller('messageTraceController', ['$scope', '$routeParams', 'ngDialog
|
||||
url: "messageTrace/viewMessageTraceGraph.query",
|
||||
params: {
|
||||
msgId: messageId,
|
||||
topic: topic
|
||||
traceTopic: topic
|
||||
}
|
||||
}).success(function (resp) {
|
||||
if (resp.status == 0) {
|
||||
|
||||
@@ -23,7 +23,7 @@ module.controller('producerController', ['$scope', '$http','Notification',functi
|
||||
method: "GET",
|
||||
url: "topic/list.query",
|
||||
params:{
|
||||
skipSysProcess:"true"
|
||||
skipSysProcess: true
|
||||
}
|
||||
}).success(function (resp) {
|
||||
if(resp.status ==0){
|
||||
|
||||
@@ -15,6 +15,20 @@
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<div class="container-fluid" id="deployHistoryList">
|
||||
<div class="modal-header">
|
||||
<div class="row">
|
||||
<label style="color: #000000">{{ 'TRACE_TOPIC' | translate }}:</label>
|
||||
<div style="display: inline-block; min-width: 300px">
|
||||
<select name="mySelect" chosen
|
||||
ng-model="selectedTraceTopic"
|
||||
ng-options="item for item in allTraceTopicList"
|
||||
required>
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="display: inline-block; color: #BDBDBD">(if no select, it will use RMQ_SYS_TRACE_TOPIC)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div ng-cloak="" class="tabsdemoDynamicHeight">
|
||||
<md-content>
|
||||
@@ -64,7 +78,7 @@
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="queryMessageTraceByMessageId(item.msgId,item.topic)">Message Trace Detail
|
||||
ng-click="queryMessageTraceByMessageId(item.msgId, selectedTraceTopic)">{{ 'MESSAGE_TRACE_DETAIL' | translate }}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -114,7 +128,7 @@
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<button class="btn btn-raised btn-sm btn-primary" type="button"
|
||||
ng-click="queryMessageTraceByMessageId(item.msgId,item.topic)">Message Trace Detail
|
||||
ng-click="queryMessageTraceByMessageId(item.msgId, selectedTraceTopic)">{{ 'MESSAGE_TRACE_DETAIL' | translate }}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -274,14 +288,14 @@
|
||||
<tr ng-repeat="consumeNode in subscriptionNode.consumeNodeList">
|
||||
<td class="text-center">
|
||||
{{consumeNode.beginTimestamp < 0 ? 'N/A' :
|
||||
(consumeNode.beginTimestamp | date:'yyyy-MM-dd HH:mm:ss.sss')}}
|
||||
(consumeNode.beginTimestamp | date:'yyyy-MM-dd HH:mm:ss.sss')}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{consumeNode.endTimestamp < 0 ? 'N/A' :
|
||||
(consumeNode.endTimestamp | date:'yyyy-MM-dd HH:mm:ss.sss')}}
|
||||
(consumeNode.endTimestamp | date:'yyyy-MM-dd HH:mm:ss.sss')}}
|
||||
</td>
|
||||
<td class="text-center">{{consumeNode.costTime < 0 ? 'N/A' :
|
||||
((consumeNode.costTime === 0 ? '<1' : consumeNode.costTime) + 'ms')}}
|
||||
((consumeNode.costTime === 0 ? '<1' : consumeNode.costTime) + 'ms')}}
|
||||
</td>
|
||||
<td class="text-center">{{consumeNode.status}}</td>
|
||||
<td class="text-center">
|
||||
@@ -302,10 +316,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</md-content>
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
<div class="modal-footer">
|
||||
<div class="ngdialog-buttons">
|
||||
<button type="button" class="ngdialog-button ngdialog-button-secondary"
|
||||
ng-click="closeThisDialog('Cancel')">{{ 'CLOSE' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user