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

jinrongtong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-spring.git


The following commit(s) were added to refs/heads/master by this push:
     new 7b6f898  [ISSUE #417]Fix the instance name is too long
7b6f898 is described below

commit 7b6f89844fee5e0df835195d43b52c12d0cd62d0
Author: CharliePu <[email protected]>
AuthorDate: Fri Jan 7 09:00:33 2022 +0800

    [ISSUE #417]Fix the instance name is too long
---
 .../apache/rocketmq/spring/support/RocketMQUtil.java   | 12 +++++++++---
 .../rocketmq/spring/support/RocketMQUtilTest.java      | 18 +++++++++++++++---
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git 
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
 
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
index dc65110..a5b3b1b 100644
--- 
a/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
+++ 
b/rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/support/RocketMQUtil.java
@@ -282,12 +282,18 @@ public class RocketMQUtil {
 
         return producer;
     }
-    
+
     public static String getInstanceName(String identify) {
         char separator = '@';
+        int maxLength = 100;
         StringBuilder instanceName = new StringBuilder();
-        instanceName.append(identify)
-                .append(separator).append(UtilAll.getPid())
+        if (identify.length() > maxLength) {
+            instanceName.append(identify, 0, maxLength)
+                    .append(identify.hashCode());
+        } else {
+            instanceName.append(identify);
+        }
+        instanceName.append(separator).append(UtilAll.getPid())
                 .append(separator).append(System.nanoTime());
         return instanceName.toString();
     }
diff --git 
a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/RocketMQUtilTest.java
 
b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/RocketMQUtilTest.java
index 30b8026..c5ae817 100644
--- 
a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/RocketMQUtilTest.java
+++ 
b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/support/RocketMQUtilTest.java
@@ -130,11 +130,23 @@ public class RocketMQUtilTest {
         assertEquals("tagA", 
message.getHeaders().get(toRocketHeaderKey(RocketMQHeaders.TAGS)));
         assertEquals("key1", 
message.getHeaders().get(toRocketHeaderKey(RocketMQHeaders.KEYS)));
     }
-    
+
     @Test
     public void testGetInstanceName() {
         String nameServer = "127.0.0.1:9876";
         String expected = "127.0.0.1:9876@";
-        
assertTrue(RocketMQUtil.getInstanceName(nameServer).startsWith(expected + 
UtilAll.getPid()));
+        assertEquals(expected + UtilAll.getPid(), 
removeNanoTime(RocketMQUtil.getInstanceName(nameServer)));
+
+        nameServer = 
"I-am-a-very-very-long-domain-name-1:9876;I-am-a-very-very-long-domain-name-2:9876;I-am-a-very-very-long-domain-name-3:9876";
+        expected = 
"I-am-a-very-very-long-domain-name-1:9876;I-am-a-very-very-long-domain-name-2:9876;I-am-a-very-very-l-335144505@";
+        assertEquals(expected + UtilAll.getPid(), 
removeNanoTime(RocketMQUtil.getInstanceName(nameServer)));
+    }
+
+    private String removeNanoTime(String instanceName) {
+        int index = instanceName.lastIndexOf('@');
+        if (index < 0) {
+            return instanceName;
+        }
+        return instanceName.substring(0, index);
     }
-}
\ No newline at end of file
+}

Reply via email to