美文网首页
rocketmq 消息id生成规则

rocketmq 消息id生成规则

作者: 飞燕踏雪泥 | 来源:发表于2017-08-13 22:33 被阅读0次

public staticString createMessageId(finalByteBuffer input,final ByteBuffer addr,final long offset) {

               input.flip();

               input.limit(MessageDecoder.MSG_ID_LENGTH);

               input.put(addr);

               input.putLong(offset);

               return UtilAll.bytes2string(input.array());

}

如上代码,我们可以看到  messageId 分为两部分 :

ip地址 8 个字节 

offset  8个字节

那么ip地址 如何转成 8个字节呢? 请看如下代码:

private staticByteBuffer socketAddress2ByteBuffer(final SocketAddress socketAddress, final  ByteBuffer byteBuffer) {

          InetSocketAddress inetSocketAddress = (InetSocketAddress) socketAddress;

          byteBuffer.put(inetSocketAddress.getAddress().getAddress(),0,4);           

         byteBuffer.putInt(inetSocketAddress.getPort());

          byteBuffer.flip();

          return byteBuffer;

}

public staticByteBuffer  socketAddress2ByteBuffer(SocketAddress socketAddress) {

            ByteBuffer byteBuffer = ByteBuffer.allocate(8);

            return socketAddress2ByteBuffer(socketAddress, byteBuffer);

}

执行方法后 Id 类似:AC110E7339B058644D464149A11D0004

相关文章

网友评论

      本文标题:rocketmq 消息id生成规则

      本文链接:https://www.haomeiwen.com/subject/nylerxtx.html