diff --git a/common/src/main/java/org/apache/rocketmq/common/TopicConfig.java b/common/src/main/java/org/apache/rocketmq/common/TopicConfig.java index 0bf64905a03..cf72aa13b0d 100644 --- a/common/src/main/java/org/apache/rocketmq/common/TopicConfig.java +++ b/common/src/main/java/org/apache/rocketmq/common/TopicConfig.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; +import org.apache.rocketmq.common.attribute.AttributeParser; import org.apache.rocketmq.common.attribute.TopicMessageType; import org.apache.rocketmq.common.constant.PermName; @@ -203,7 +204,9 @@ public TopicMessageType getTopicMessageType() { if (attributes == null) { return TopicMessageType.NORMAL; } - String content = attributes.get(TOPIC_MESSAGE_TYPE_ATTRIBUTE.getName()); + String content = attributes.get(TOPIC_MESSAGE_TYPE_ATTRIBUTE.getName()) == null + ? attributes.get(AttributeParser.ATTR_ADD_PLUS_SIGN + TOPIC_MESSAGE_TYPE_ATTRIBUTE.getName()) + : attributes.get(TOPIC_MESSAGE_TYPE_ATTRIBUTE.getName()); if (content == null) { return TopicMessageType.NORMAL; } @@ -212,7 +215,7 @@ public TopicMessageType getTopicMessageType() { @JSONField(serialize = false, deserialize = false) public void setTopicMessageType(TopicMessageType topicMessageType) { - attributes.put(TOPIC_MESSAGE_TYPE_ATTRIBUTE.getName(), topicMessageType.getValue()); + attributes.put(AttributeParser.ATTR_ADD_PLUS_SIGN + TOPIC_MESSAGE_TYPE_ATTRIBUTE.getName(), topicMessageType.getValue()); } @Override diff --git a/common/src/test/java/org/apache/rocketmq/common/TopicConfigTest.java b/common/src/test/java/org/apache/rocketmq/common/TopicConfigTest.java index 3df93a0bfb3..d2b5f958fbc 100644 --- a/common/src/test/java/org/apache/rocketmq/common/TopicConfigTest.java +++ b/common/src/test/java/org/apache/rocketmq/common/TopicConfigTest.java @@ -40,12 +40,12 @@ public void testEncode() { topicConfig.setTopicMessageType(TopicMessageType.FIFO); String encode = topicConfig.encode(); - assertThat(encode).isEqualTo("topic 8 8 6 SINGLE_TAG {\"message.type\":\"FIFO\"}"); + assertThat(encode).isEqualTo("topic 8 8 6 SINGLE_TAG {\"+message.type\":\"FIFO\"}"); } @Test public void testDecode() { - String encode = "topic 8 8 6 SINGLE_TAG {\"message.type\":\"FIFO\"}"; + String encode = "topic 8 8 6 SINGLE_TAG {\"+message.type\":\"FIFO\"}"; TopicConfig decodeTopicConfig = new TopicConfig(); decodeTopicConfig.decode(encode);