Protobuf的使用 - Go语言中文社区

Protobuf的使用


在网站http://mvnrepository.com/artifact/com.google.protobuf/protobuf-java/3.4.0下载Jar包,在网站https://github.com/google/protobuf/releases下载工具,选择windows版本,

解压protoc-3.4.0-win32.zip并设置环境变量,在系统变量Path中添加protoc.exe所在路径(D:软件protoc-3.4.0-win32bin),在命令窗口运行protoc.exe –version

出现如上提示表示可以使用。新建文本文件并改名为Message.prop,定义消息接口体,内容如下:

在命令行输入以下命令:

protoc.exe -I D:软件protoc-3.4.0-win32bin  --java_out=D:软件protoc-3.4.0-win32bin  Message.proto,即可生成相应的Java文件。在java项目中引用protobuf-java-3.4.0.jar,然后将生成的Java文件拷贝到项目中。

序列化消息

public static byte[] GetProtobufMessageBytes(MQ entity){

      Protobuf.MQMessageEntity.Builder builder = Protobuf.MQMessageEntity.newBuilder();

      builder.setSender(entity.getSender());

      builder.setMessageId(entity.getMessageId());

      builder.setMessageType(entity.getMessageType());

      builder.setSerializeType(entity.getSerializeType());

      builder.setIsRetry(entity.getIsRetry());

      builder.setClientId(entity.getClientId());

      builder.setMessageKey(builder.getMessageKey());

      builder.setSource(entity.getSource());

   builder.setContent(ByteString.copyFrom(entity.getMessage()));

      Protobuf.MQMessageEntity msg = builder.build();

      return msg.toByteArray();

   }

:entity为自定义类型,存储消息。

反序列化

Protobuf.MQMessageEntity entity = Protobuf.MQMessageEntity.parseFrom(bytes);

注:bytes为byte[]类型。

 

如果要将byte[]转换成ByteString,可以使用ByteString.copyFrom(bytes[]);

将ByteString转换成byte[]可以使用toStringUtf8 。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/huzhizhewudi/article/details/84573377
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-13 19:37:33
  • 阅读 ( 1386 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢