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:

Reply via email to