1. pom文件引入依赖包
com.google.protobuf protobuf-java3.9.1 package kr.motd.maven os-maven-plugin1.5.0.Final org.xolstice.maven.plugins protobuf-maven-plugin0.6.1 true ${project.basedir}/src/main/java/com/cn/prodf com.google.protobuf:protoc:3.2.0:exe:${os.detected.classifier}
2. 编辑proto文件
syntax = "proto2";
// 以下代码设置为true的话会生成多个文件,false会生成1个文件
// option java_multiple_files = true;
//定义protobuf的包名称空间
option java_package = "com.crazymakercircle.chat.common.bean.msg";
// 消息体名称
option java_outer_classname = "ProtoMsg";
message MessageRequest{
required uint64 msg_id = 1; //消息id, required 表示必填
required string from = 2; //发送方uId
required string to = 3; //接收方uId
required uint64 time = 4; //时间戳(单位:毫秒)
required uint32 msg_type = 5; //消息类型 1:纯文本 2:音频 3:视频 4:地理位置 5:其他
required string content = 6; //消息内容
optional string url = 7; //多媒体地址 optional 表示可以为空
optional string property = 8; //附加属性
optional string from_nick = 9; //发送者昵称
optional string json = 10; //附加的json串
}
3. 点击编译
4. 测试运行
public static void main(String[] args) {
ProtoMsg.MessageRequest.Builder builder = ProtoMsg.MessageRequest.newBuilder();
builder.setContent("hi,cn_yang").setFrom("A").setTo("B").setTime(System.currentTimeMillis())
.setMsgId(System.currentTimeMillis()).setMsgType(1);
System.out.println(builder.getContent());
ProtoMsg.MessageRequest messageRequest = builder.build();
//转为bytes
byte[] bytes = messageRequest.toByteArray();
System.out.println("数据长度:" + bytes.length);
try {
//解码
ProtoMsg.MessageRequest m1 = ProtoMsg.MessageRequest.parseFrom(bytes);
System.out.println(m1.getContent() + "_" + m1.getFrom());
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}



