[ISSUE #43]Give a tip when no message found with topic + time query. (#44)

Co-authored-by: zhangjidi2016 <zhangjidi@cmss.chinamobile.com>
This commit is contained in:
zhangjidi2016
2021-11-17 13:30:33 +08:00
committed by GitHub
parent e660c7d874
commit 6054c057c8
5 changed files with 24 additions and 3 deletions

View File

@@ -31,6 +31,7 @@ import org.apache.rocketmq.acl.common.SessionCredentials;
import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer; import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
import org.apache.rocketmq.client.consumer.PullResult; import org.apache.rocketmq.client.consumer.PullResult;
import org.apache.rocketmq.client.consumer.PullStatus; import org.apache.rocketmq.client.consumer.PullStatus;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.MixAll; import org.apache.rocketmq.common.MixAll;
import org.apache.rocketmq.common.Pair; import org.apache.rocketmq.common.Pair;
import org.apache.rocketmq.common.message.MessageClientIDSetter; import org.apache.rocketmq.common.message.MessageClientIDSetter;
@@ -111,6 +112,9 @@ public class MessageServiceImpl implements MessageService {
} }
}); });
} catch (Exception err) { } catch (Exception err) {
if (err instanceof MQClientException) {
throw new ServiceException(-1, ((MQClientException) err).getErrorMessage());
}
throw Throwables.propagate(err); throw Throwables.propagate(err);
} }
} }

View File

@@ -20,8 +20,6 @@ package org.apache.rocketmq.dashboard.service.impl;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.base.Throwables;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -35,6 +33,7 @@ import org.apache.rocketmq.common.Pair;
import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.common.topic.TopicValidator; import org.apache.rocketmq.common.topic.TopicValidator;
import org.apache.rocketmq.dashboard.config.RMQConfigure; import org.apache.rocketmq.dashboard.config.RMQConfigure;
import org.apache.rocketmq.dashboard.exception.ServiceException;
import org.apache.rocketmq.dashboard.model.MessageTraceView; import org.apache.rocketmq.dashboard.model.MessageTraceView;
import org.apache.rocketmq.dashboard.model.trace.ProducerNode; import org.apache.rocketmq.dashboard.model.trace.ProducerNode;
import org.apache.rocketmq.dashboard.model.trace.MessageTraceGraph; import org.apache.rocketmq.dashboard.model.trace.MessageTraceGraph;
@@ -82,7 +81,7 @@ public class MessageTraceServiceImpl implements MessageTraceService {
} }
return messageTraceViews; return messageTraceViews;
} catch (Exception err) { } catch (Exception err) {
throw Throwables.propagate(err); throw new ServiceException(-1, String.format("Failed to query message trace by msgId %s", key));
} }
} }

View File

@@ -58,6 +58,7 @@ module.controller('messageController', ['$scope', 'ngDialog', '$http', 'Notifica
}; };
$scope.queryMessagePageByTopic = function () { $scope.queryMessagePageByTopic = function () {
$("#noMsgTip").css("display", "none");
if ($scope.timepickerEnd < $scope.timepickerBegin) { if ($scope.timepickerEnd < $scope.timepickerBegin) {
Notification.error({message: "endTime is later than beginTime!", delay: 2000}); Notification.error({message: "endTime is later than beginTime!", delay: 2000});
return return
@@ -80,6 +81,9 @@ module.controller('messageController', ['$scope', 'ngDialog', '$http', 'Notifica
if (resp.status === 0) { if (resp.status === 0) {
console.log(resp); console.log(resp);
$scope.messageShowList = resp.data.page.content; $scope.messageShowList = resp.data.page.content;
if ($scope.messageShowList.length == 0){
$("#noMsgTip").removeAttr("style");
}
if (resp.data.page.first) { if (resp.data.page.first) {
$scope.paginationConf.currentPage = 1; $scope.paginationConf.currentPage = 1;
} }

View File

@@ -73,6 +73,9 @@
<th class="text-center">StoreTime</th> <th class="text-center">StoreTime</th>
<th class="text-center">Operation</th> <th class="text-center">Operation</th>
</tr> </tr>
<tr style="display: none" id="noMsgTip">
<td colspan="5" style="text-align: center">{{'NO_MATCH_RESULT' | translate}}</td>
</tr>
<tr ng-repeat="item in messageShowList"> <tr ng-repeat="item in messageShowList">
<td class="text-center">{{item.msgId}}</td> <td class="text-center">{{item.msgId}}</td>
<td class="text-center">{{item.properties.TAGS}}</td> <td class="text-center">{{item.properties.TAGS}}</td>

View File

@@ -62,6 +62,7 @@ public class MessageTraceControllerTest extends BaseControllerTest {
messageList.add(messageExt); messageList.add(messageExt);
QueryResult queryResult = new QueryResult(System.currentTimeMillis(), messageList); QueryResult queryResult = new QueryResult(System.currentTimeMillis(), messageList);
when(mqAdminExt.queryMessage(anyString(), anyString(), anyInt(), anyLong(), anyLong())) when(mqAdminExt.queryMessage(anyString(), anyString(), anyInt(), anyLong(), anyLong()))
.thenThrow(new RuntimeException())
.thenReturn(queryResult); .thenReturn(queryResult);
} }
@@ -100,6 +101,11 @@ public class MessageTraceControllerTest extends BaseControllerTest {
final String url = "/messageTrace/viewMessageTraceDetail.query"; final String url = "/messageTrace/viewMessageTraceDetail.query";
requestBuilder = MockMvcRequestBuilders.get(url); requestBuilder = MockMvcRequestBuilders.get(url);
requestBuilder.param("msgId", "0A9A003F00002A9F0000000000000319"); requestBuilder.param("msgId", "0A9A003F00002A9F0000000000000319");
// query message trace exception
perform = mockMvc.perform(requestBuilder);
performErrorExpect(perform);
// query message trace success
perform = mockMvc.perform(requestBuilder); perform = mockMvc.perform(requestBuilder);
perform.andExpect(status().isOk()) perform.andExpect(status().isOk())
.andExpect(jsonPath("$.data", hasSize(4))) .andExpect(jsonPath("$.data", hasSize(4)))
@@ -114,6 +120,11 @@ public class MessageTraceControllerTest extends BaseControllerTest {
final String url = "/messageTrace/viewMessageTraceGraph.query"; final String url = "/messageTrace/viewMessageTraceGraph.query";
requestBuilder = MockMvcRequestBuilders.get(url); requestBuilder = MockMvcRequestBuilders.get(url);
requestBuilder.param("msgId", "0A9A003F00002A9F0000000000000319"); requestBuilder.param("msgId", "0A9A003F00002A9F0000000000000319");
// query message trace exception
perform = mockMvc.perform(requestBuilder);
performErrorExpect(perform);
// query message trace success
perform = mockMvc.perform(requestBuilder); perform = mockMvc.perform(requestBuilder);
perform.andExpect(status().isOk()) perform.andExpect(status().isOk())
.andExpect(jsonPath("$.data").isMap()) .andExpect(jsonPath("$.data").isMap())