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
+}