You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rocketmq.apache.org by GitBox <gi...@apache.org> on 2019/03/06 07:56:36 UTC

[GitHub] [rocketmq-spring] duhenglucky commented on a change in pull request #49: [ISSUE-41] Optimize header conversion

duhenglucky commented on a change in pull request #49: [ISSUE-41] Optimize header conversion
URL: https://github.com/apache/rocketmq-spring/pull/49#discussion_r262825586
 
 

 ##########
 File path: rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
 ##########
 @@ -73,37 +76,48 @@ public static MessagingException convert(MQClientException e) {
 
     public static org.springframework.messaging.Message convertToSpringMessage(
         org.apache.rocketmq.common.message.MessageExt message) {
-        org.springframework.messaging.Message retMessage =
+        MessageBuilder messageBuilder =
             MessageBuilder.withPayload(message.getBody()).
-                setHeader(RocketMQHeaders.KEYS, message.getKeys()).
-                setHeader(RocketMQHeaders.TAGS, message.getTags()).
-                setHeader(RocketMQHeaders.TOPIC, message.getTopic()).
-                setHeader(RocketMQHeaders.MESSAGE_ID, message.getMsgId()).
-                setHeader(RocketMQHeaders.BORN_TIMESTAMP, message.getBornTimestamp()).
-                setHeader(RocketMQHeaders.BORN_HOST, message.getBornHostString()).
-                setHeader(RocketMQHeaders.FLAG, message.getFlag()).
-                setHeader(RocketMQHeaders.QUEUE_ID, message.getQueueId()).
-                setHeader(RocketMQHeaders.SYS_FLAG, message.getSysFlag()).
-                setHeader(RocketMQHeaders.TRANSACTION_ID, message.getTransactionId()).
-                setHeader(RocketMQHeaders.PROPERTIES, message.getProperties()).
-                build();
-
-        return retMessage;
+                setHeader(toRocketHeaderKey(RocketMQHeaders.KEYS), message.getKeys()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.TAGS), message.getTags()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.TOPIC), message.getTopic()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.MESSAGE_ID), message.getMsgId()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.BORN_TIMESTAMP), message.getBornTimestamp()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.BORN_HOST), message.getBornHostString()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.FLAG), message.getFlag()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.QUEUE_ID), message.getQueueId()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.SYS_FLAG), message.getSysFlag()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.TRANSACTION_ID), message.getTransactionId());
+        addUserProperties(message.getProperties(), messageBuilder);
+        return messageBuilder.build();
+    }
+
+    public static String toRocketHeaderKey(String rawKey) {
+        return RocketMQHeaders.PREFIX + rawKey;
+    }
+
+    private static void addUserProperties(Map<String, String> properties, MessageBuilder messageBuilder) {
+        if (!CollectionUtils.isEmpty(properties)) {
+            properties.forEach((key, val) -> {
+                if (!MessageConst.STRING_HASH_SET.contains(key) && !MessageHeaders.ID.equals(key)
+                    && !MessageHeaders.TIMESTAMP.equals(key)) {
+                    messageBuilder.setHeader(key, val);
+                }
+            });
+        }
     }
 
     public static org.springframework.messaging.Message convertToSpringMessage(
         org.apache.rocketmq.common.message.Message message) {
-        org.springframework.messaging.Message retMessage =
+        MessageBuilder messageBuilder =
             MessageBuilder.withPayload(message.getBody()).
-                setHeader(RocketMQHeaders.KEYS, message.getKeys()).
-                setHeader(RocketMQHeaders.TAGS, message.getTags()).
-                setHeader(RocketMQHeaders.TOPIC, message.getTopic()).
-                setHeader(RocketMQHeaders.FLAG, message.getFlag()).
-                setHeader(RocketMQHeaders.TRANSACTION_ID, message.getTransactionId()).
-                setHeader(RocketMQHeaders.PROPERTIES, message.getProperties()).
-                build();
-
-        return retMessage;
+                setHeader(toRocketHeaderKey(RocketMQHeaders.KEYS), message.getKeys()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.TAGS), message.getTags()).
+                setHeader(toRocketHeaderKey(RocketMQHeaders.TOPIC), message.getTopic()).
 
 Review comment:
   In would be nice if we can put the toRocketHeaderKey method into the setHeader method or redefine a method.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services