社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
在网站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 。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!