Skip to content

Commit 3d13e4e

Browse files
authored
fix:Failed to find messages older than 3 days using message ID #274 (#275)
1 parent 1aad0cd commit 3d13e4e

File tree

1 file changed

+32
-26
lines changed

1 file changed

+32
-26
lines changed

src/main/java/org/apache/rocketmq/dashboard/service/client/MQAdminExtImpl.java

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,27 @@
1717
package org.apache.rocketmq.dashboard.service.client;
1818

1919
import com.google.common.base.Throwables;
20+
import java.io.UnsupportedEncodingException;
21+
import java.util.List;
22+
import java.util.Map;
23+
import java.util.Properties;
24+
import java.util.Set;
2025
import org.apache.rocketmq.client.QueryResult;
2126
import org.apache.rocketmq.client.exception.MQBrokerException;
2227
import org.apache.rocketmq.client.exception.MQClientException;
28+
import org.apache.rocketmq.client.impl.MQAdminImpl;
2329
import org.apache.rocketmq.common.AclConfig;
2430
import org.apache.rocketmq.common.PlainAccessConfig;
2531
import org.apache.rocketmq.common.TopicConfig;
32+
import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats;
33+
import org.apache.rocketmq.remoting.protocol.admin.RollbackStats;
34+
import org.apache.rocketmq.remoting.protocol.admin.TopicStatsTable;
2635
import org.apache.rocketmq.common.message.MessageClientIDSetter;
2736
import org.apache.rocketmq.common.message.MessageExt;
2837
import org.apache.rocketmq.common.message.MessageQueue;
2938
import org.apache.rocketmq.common.message.MessageRequestMode;
30-
import org.apache.rocketmq.dashboard.util.JsonUtil;
31-
import org.apache.rocketmq.remoting.RemotingClient;
32-
import org.apache.rocketmq.remoting.exception.RemotingCommandException;
33-
import org.apache.rocketmq.remoting.exception.RemotingConnectException;
34-
import org.apache.rocketmq.remoting.exception.RemotingException;
35-
import org.apache.rocketmq.remoting.exception.RemotingSendRequestException;
36-
import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
37-
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
3839
import org.apache.rocketmq.remoting.protocol.RequestCode;
3940
import org.apache.rocketmq.remoting.protocol.ResponseCode;
40-
import org.apache.rocketmq.remoting.protocol.admin.ConsumeStats;
41-
import org.apache.rocketmq.remoting.protocol.admin.RollbackStats;
42-
import org.apache.rocketmq.remoting.protocol.admin.TopicStatsTable;
4341
import org.apache.rocketmq.remoting.protocol.body.BrokerReplicasInfo;
4442
import org.apache.rocketmq.remoting.protocol.body.BrokerStatsData;
4543
import org.apache.rocketmq.remoting.protocol.body.ClusterAclVersionInfo;
@@ -66,20 +64,23 @@
6664
import org.apache.rocketmq.remoting.protocol.statictopic.TopicQueueMappingDetail;
6765
import org.apache.rocketmq.remoting.protocol.subscription.GroupForbidden;
6866
import org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
67+
import org.apache.rocketmq.dashboard.util.JsonUtil;
68+
import org.apache.rocketmq.remoting.RemotingClient;
69+
import org.apache.rocketmq.remoting.exception.RemotingCommandException;
70+
import org.apache.rocketmq.remoting.exception.RemotingConnectException;
71+
import org.apache.rocketmq.remoting.exception.RemotingException;
72+
import org.apache.rocketmq.remoting.exception.RemotingSendRequestException;
73+
import org.apache.rocketmq.remoting.exception.RemotingTimeoutException;
74+
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
6975
import org.apache.rocketmq.tools.admin.MQAdminExt;
7076
import org.apache.rocketmq.tools.admin.api.BrokerOperatorResult;
7177
import org.apache.rocketmq.tools.admin.api.MessageTrack;
7278
import org.apache.rocketmq.tools.admin.common.AdminToolResult;
79+
import org.joor.Reflect;
7380
import org.slf4j.Logger;
7481
import org.slf4j.LoggerFactory;
7582
import org.springframework.stereotype.Service;
7683

77-
import java.io.UnsupportedEncodingException;
78-
import java.util.List;
79-
import java.util.Map;
80-
import java.util.Properties;
81-
import java.util.Set;
82-
8384
import static org.apache.rocketmq.remoting.protocol.RemotingSerializable.decode;
8485

8586
@Service
@@ -461,18 +462,23 @@ public MessageExt viewMessage(String topic,
461462
logger.info("MessageClientIDSetter.getNearlyTimeFromID(msgId)={} msgId={}", MessageClientIDSetter.getNearlyTimeFromID(msgId), msgId);
462463
try {
463464
return viewMessage(msgId);
465+
} catch (Exception e) {
464466
}
465-
catch (Exception e) {
466-
}
467-
467+
MQAdminImpl mqAdminImpl = MQAdminInstance.threadLocalMqClientInstance().getMQAdminImpl();
468468
Set<String> clusterList = MQAdminInstance.threadLocalMQAdminExt().getTopicClusterList(topic);
469469
if (clusterList == null || clusterList.isEmpty()) {
470-
return MQAdminInstance.threadLocalMQAdminExt().queryMessage("", topic, msgId);
471-
}
472-
for (String name : clusterList) {
473-
MessageExt messageExt = MQAdminInstance.threadLocalMQAdminExt().queryMessage(name, topic, msgId);
474-
if (messageExt != null) {
475-
return messageExt;
470+
QueryResult qr = Reflect.on(mqAdminImpl).call("queryMessage", "", topic, msgId, 32,
471+
MessageClientIDSetter.getNearlyTimeFromID(msgId).getTime(), Long.MAX_VALUE, true).get();
472+
if (qr != null && qr.getMessageList() != null && !qr.getMessageList().isEmpty()) {
473+
return qr.getMessageList().get(0);
474+
}
475+
} else {
476+
for (String name : clusterList) {
477+
QueryResult qr = Reflect.on(mqAdminImpl).call("queryMessage", name, topic, msgId, 32,
478+
MessageClientIDSetter.getNearlyTimeFromID(msgId).getTime(), Long.MAX_VALUE, true).get();
479+
if (qr != null && qr.getMessageList() != null && !qr.getMessageList().isEmpty()) {
480+
return qr.getMessageList().get(0);
481+
}
476482
}
477483
}
478484
return null;

0 commit comments

Comments
 (0)