This is an automated email from the ASF dual-hosted git repository.

lizhimin 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 b56706423 Optimize handle json in pop message (#5643)
b56706423 is described below

commit b56706423fc8799dbcccff909b6ac1c9c0969980
Author: lizhimins <[email protected]>
AuthorDate: Mon Dec 5 15:57:27 2022 +0800

    Optimize handle json in pop message (#5643)
    
    Optimize handle json in pop message
    
    Co-authored-by: 斜阳 <[email protected]>
---
 store/BUILD.bazel                                  |  3 +-
 .../java/org/apache/rocketmq/store/pop/AckMsg.java | 16 +++++++
 .../org/apache/rocketmq/store/pop/AckMsgTest.java  | 51 ++++++++++++++++++++++
 3 files changed, 69 insertions(+), 1 deletion(-)

diff --git a/store/BUILD.bazel b/store/BUILD.bazel
index 786054c7d..b9ba87675 100644
--- a/store/BUILD.bazel
+++ b/store/BUILD.bazel
@@ -52,7 +52,8 @@ java_library(
         ":store",
         "//:test_deps",
         "//common",
-        "//remoting",        
+        "//remoting",
+        "@maven//:com_alibaba_fastjson",
         "@maven//:com_conversantmedia_disruptor",
         "@maven//:io_openmessaging_storage_dledger",
         "@maven//:org_apache_commons_commons_lang3",
diff --git a/store/src/main/java/org/apache/rocketmq/store/pop/AckMsg.java 
b/store/src/main/java/org/apache/rocketmq/store/pop/AckMsg.java
index 1d62e392d..3e65c104b 100644
--- a/store/src/main/java/org/apache/rocketmq/store/pop/AckMsg.java
+++ b/store/src/main/java/org/apache/rocketmq/store/pop/AckMsg.java
@@ -16,13 +16,29 @@
  */
 package org.apache.rocketmq.store.pop;
 
+import com.alibaba.fastjson.annotation.JSONField;
+
 public class AckMsg {
+
+    @JSONField(name = "ao", alternateNames = {"ackOffset"})
     private long ackOffset;
+
+    @JSONField(name = "so", alternateNames = {"startOffset"})
     private long startOffset;
+
+    @JSONField(name = "c", alternateNames = {"consumerGroup"})
     private String consumerGroup;
+
+    @JSONField(name = "t", alternateNames = {"topic"})
     private String topic;
+
+    @JSONField(name = "q", alternateNames = {"queueId"})
     private int queueId;
+
+    @JSONField(name = "pt", alternateNames = {"popTime"})
     private long popTime;
+
+    @JSONField(name = "bn", alternateNames = {"brokerName"})
     private String brokerName;
 
     public long getPopTime() {
diff --git a/store/src/test/java/org/apache/rocketmq/store/pop/AckMsgTest.java 
b/store/src/test/java/org/apache/rocketmq/store/pop/AckMsgTest.java
new file mode 100644
index 000000000..b5a3ff638
--- /dev/null
+++ b/store/src/test/java/org/apache/rocketmq/store/pop/AckMsgTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.store.pop;
+
+import com.alibaba.fastjson.JSON;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class AckMsgTest {
+
+    @Test
+    public void testSerializeAndDeSerialize() {
+        String longString = 
"{\"ackOffset\":100,\"brokerName\":\"brokerName\",\"consumerGroup\":\"group\"," 
+
+            
"\"popTime\":1670212915531,\"queueId\":3,\"startOffset\":200,\"topic\":\"topic\"}";
+
+        AckMsg ackMsg = new AckMsg();
+        ackMsg.setBrokerName("brokerName");
+        ackMsg.setTopic("topic");
+        ackMsg.setConsumerGroup("group");
+        ackMsg.setQueueId(3);
+        ackMsg.setStartOffset(200L);
+        ackMsg.setAckOffset(100L);
+        ackMsg.setPopTime(1670212915531L);
+        String jsonString = JSON.toJSONString(ackMsg);
+        AckMsg ackMsg1 = JSON.parseObject(jsonString, AckMsg.class);
+        AckMsg ackMsg2 = JSON.parseObject(longString, AckMsg.class);
+
+        Assert.assertEquals(ackMsg1.getBrokerName(), ackMsg2.getBrokerName());
+        Assert.assertEquals(ackMsg1.getTopic(), ackMsg2.getTopic());
+        Assert.assertEquals(ackMsg1.getConsumerGroup(), 
ackMsg2.getConsumerGroup());
+        Assert.assertEquals(ackMsg1.getQueueId(), ackMsg2.getQueueId());
+        Assert.assertEquals(ackMsg1.getStartOffset(), 
ackMsg2.getStartOffset());
+        Assert.assertEquals(ackMsg1.getAckOffset(), ackMsg2.getAckOffset());
+        Assert.assertEquals(ackMsg1.getPopTime(), ackMsg2.getPopTime());
+    }
+}
\ No newline at end of file

Reply via email to