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