前提
最近在手撸IM相关的APP,想着后台传输数据用
protobuf
来会方便一些,奈何自己刚开始接触SpringBoot
时间不长,有些东西不是很清楚,使用期间遇到了一些问题。但是,最终还是解决了,今天写这篇文章主要是记录以下Springboot
中通过grpc
的方式使用protobuf
注意:关于 protobuf
的相关解释不说了,如果不清楚可以移步Android Protobuf 使用初探,查看相关内容
首先
关于
Springboot
中如何使用protobuf
,请看下面的配置,网上其他文章说可以添加protobuf
的插件,各位可以根据自己的具体情况添加。
-
1、打开
pom.xml
文件,在properties
节点下添加protobuf
和grpc
的版本<properties> <grpc.version>1.6.1</grpc.version> <protobuf.version>3.3.0</protobuf.version> <java.version>1.8</java.version> </properties>
-
2、在
dependencies
节点下添加protobuf
和grpc
的maven依赖<dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>${protobuf.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty</artifactId> <version>${grpc.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>${grpc.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>${grpc.version}</version> <scope>provided</scope> </dependency>
-
3、在
build
节点下添加maven
<extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.5.0.Final</version> </extension> </extensions> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.5.0</version> <configuration> <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> </plugins>
其次
这一步是创建
protobuf文件
并且生成对应的java文件
- 1、在
src/main
下面创建proto
包,并且在里面创建Msg.proto
文件,如下图所示
-
2、写入protobuf内容
syntax = "proto3"; option java_outer_classname = "MessageProtoBuf";// 指定生成的类名 message Msg { Head head = 1;// 消息头 string body = 2;// 消息体 } message Head { string msgId = 1;// 消息id int32 msgType = 2;// 消息类型 int32 msgContentType = 3;// 消息内容类型 string fromId = 4;// 消息发送者id string toId = 5;// 消息接收者id int64 timestamp = 6;// 消息时间戳 int32 statusReport = 7;// 状态报告 string extend = 8;// 扩展字段,以key/value形式存放的json }
-
3、开始编译,生成对应的java文件,如下图所以,依次点击,就会在
target
文件夹下生成对应的java类
-
4、如下图所示,
target
文件夹下就会生成对应的java文件
注意:我这里指定的protobuf的文件名为MessageProtoBuf
,当然你也可以自定义。
最后
好了,这就是今天的
Springboot
使用grpc
的方式添加protobuf
的文章,如果有疑问可以进水群(493180098
)探讨。