This is an automated email from the ASF dual-hosted git repository.
vintagewang pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 97521a3d8 [ISSUE #4849] Print message body while querying message,
admin tools (queryMsgById&queryMsgByOffset) enhancement. (#4850)
97521a3d8 is described below
commit 97521a3d8d9ee3c3ea7f082fa74e3d412da0d0b4
Author: allen <[email protected]>
AuthorDate: Sat Aug 20 12:24:54 2022 +0800
[ISSUE #4849] Print message body while querying message, admin tools
(queryMsgById&queryMsgByOffset) enhancement. (#4850)
---
.../command/message/QueryMsgByIdSubCommand.java | 23 +++++++++++++++++++---
.../message/QueryMsgByOffsetSubCommand.java | 11 ++++++++++-
2 files changed, 30 insertions(+), 4 deletions(-)
diff --git
a/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByIdSubCommand.java
b/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByIdSubCommand.java
index bdcd5c8a2..e118d00f7 100644
---
a/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByIdSubCommand.java
+++
b/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByIdSubCommand.java
@@ -20,6 +20,7 @@ import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.charset.Charset;
import java.util.List;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
@@ -42,14 +43,18 @@ import org.apache.rocketmq.tools.command.SubCommand;
import org.apache.rocketmq.tools.command.SubCommandException;
public class QueryMsgByIdSubCommand implements SubCommand {
- public static void queryById(final DefaultMQAdminExt admin, final String
msgId) throws MQClientException,
+ public static void queryById(final DefaultMQAdminExt admin, final String
msgId, final Charset msgBodyCharset) throws MQClientException,
RemotingException, MQBrokerException, InterruptedException,
IOException {
MessageExt msg = admin.viewMessage(msgId);
- printMsg(admin, msg);
+ printMsg(admin, msg, msgBodyCharset);
}
public static void printMsg(final DefaultMQAdminExt admin, final
MessageExt msg) throws IOException {
+ printMsg(admin, msg, null);
+ }
+
+ public static void printMsg(final DefaultMQAdminExt admin, final
MessageExt msg, final Charset msgBodyCharset) throws IOException {
if (msg == null) {
System.out.printf("%nMessage not found!");
return;
@@ -136,6 +141,10 @@ public class QueryMsgByIdSubCommand implements SubCommand {
bodyTmpFilePath
);
+ if (null != msgBodyCharset) {
+ System.out.printf("%-20s %s%n", "Message Body:", new
String(msg.getBody(), msgBodyCharset));
+ }
+
try {
List<MessageTrack> mtdList = admin.messageTrackDetail(msg);
if (mtdList.isEmpty()) {
@@ -200,6 +209,10 @@ public class QueryMsgByIdSubCommand implements SubCommand {
opt = new Option("u", "unitName", true, "unit name");
opt.setRequired(false);
options.addOption(opt);
+
+ opt = new Option("f", "bodyFormat", true, "print message body by the
specified format");
+ opt.setRequired(false);
+ options.addOption(opt);
return options;
}
@@ -242,9 +255,13 @@ public class QueryMsgByIdSubCommand implements SubCommand {
}
}
} else {
+ Charset msgBodyCharset = null;
+ if (commandLine.hasOption('f')) {
+ msgBodyCharset =
Charset.forName(commandLine.getOptionValue('f').trim());
+ }
for (String msgId : msgIdArr) {
if (StringUtils.isNotBlank(msgId)) {
- queryById(defaultMQAdminExt, msgId.trim());
+ queryById(defaultMQAdminExt, msgId.trim(),
msgBodyCharset);
}
}
diff --git
a/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByOffsetSubCommand.java
b/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByOffsetSubCommand.java
index 75a4cd059..d27313af1 100644
---
a/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByOffsetSubCommand.java
+++
b/tools/src/main/java/org/apache/rocketmq/tools/command/message/QueryMsgByOffsetSubCommand.java
@@ -16,6 +16,8 @@
*/
package org.apache.rocketmq.tools.command.message;
+import java.nio.charset.Charset;
+
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
@@ -58,6 +60,9 @@ public class QueryMsgByOffsetSubCommand implements SubCommand
{
opt.setRequired(true);
options.addOption(opt);
+ opt = new Option("f", "bodyFormat", true, "print message body by the
specified format");
+ opt.setRequired(false);
+ options.addOption(opt);
return options;
}
@@ -74,6 +79,10 @@ public class QueryMsgByOffsetSubCommand implements
SubCommand {
String brokerName = commandLine.getOptionValue('b').trim();
String queueId = commandLine.getOptionValue('i').trim();
String offset = commandLine.getOptionValue('o').trim();
+ Charset msgBodyCharset = null;
+ if (commandLine.hasOption('f')) {
+ msgBodyCharset =
Charset.forName(commandLine.getOptionValue('f').trim());
+ }
MessageQueue mq = new MessageQueue();
mq.setTopic(topic);
@@ -87,7 +96,7 @@ public class QueryMsgByOffsetSubCommand implements SubCommand
{
if (pullResult != null) {
switch (pullResult.getPullStatus()) {
case FOUND:
- QueryMsgByIdSubCommand.printMsg(defaultMQAdminExt,
pullResult.getMsgFoundList().get(0));
+ QueryMsgByIdSubCommand.printMsg(defaultMQAdminExt,
pullResult.getMsgFoundList().get(0), msgBodyCharset);
break;
case NO_MATCHED_MSG:
case NO_NEW_MSG: