diff --git a/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java b/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java index 9d6ec95a5d2deacb6bdef3fbd9bffc2dd757d96e..041bf6bae20215442de7e007b8786df7eec366cf 100644 --- a/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java +++ b/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java @@ -104,11 +104,11 @@ public class MessageClientIDSetter { return result; } - public static short getPidFromID(String msgID) { + public static int getPidFromID(String msgID) { byte[] bytes = UtilAll.string2bytes(msgID); ByteBuffer wrap = ByteBuffer.wrap(bytes); - wrap.position(bytes.length - 2 - 4 - 4 - 2); - return wrap.getShort(); + int value = wrap.getShort(bytes.length - 2 - 4 - 4 - 2); + return value & 0x0000FFFF; } public static String createUniqID() { diff --git a/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java b/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java index 55aa5058da8f11f97cb058e90c99265592995a9b..6d8c20383a2b6195ffda2e473d522dd26b2e4093 100644 --- a/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java +++ b/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java @@ -40,7 +40,7 @@ public class MessageClientIDSetterTest { int pid = UtilAll.getPid(); String uniqID = MessageClientIDSetter.createUniqID(); - short pidFromID = MessageClientIDSetter.getPidFromID(uniqID); + int pidFromID = MessageClientIDSetter.getPidFromID(uniqID); assertThat(pid).isEqualTo(pidFromID); }