java中使用grpc和protobuf
来源:互联网 发布:第三方支付牌照 知乎 编辑:程序博客网 时间:2024/06/05 21:56
第一步
使用maven,比较简单。依赖项中添加:
<dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty</artifactId> <version>1.4.0</version></dependency><dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>1.4.0</version></dependency><dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>1.4.0</version></dependency>
在pom的build中添加插件配置:
具体可以查看文档说明: https://github.com/grpc/grpc-java/
<plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.5.0</version> <configuration> <protocArtifact>com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin>
第二步
执行命令mvn generate-sources
这里会下载对应的protobuf编译器,和grpc的生成插件。
>>>mvn generate-sources[INFO] Scanning for projects...[INFO] ------------------------------------------------------------------------[INFO] Detecting the operating system and CPU architecture[INFO] ------------------------------------------------------------------------[INFO] os.detected.name: osx[INFO] os.detected.arch: x86_64[INFO] os.detected.classifier: osx-x86_64[INFO] [INFO] ------------------------------------------------------------------------[INFO] Building grpc 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- protobuf-maven-plugin:0.5.0:compile (default) @ grpc ---Downloading: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0.pomDownloaded: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0.pom (4 KB at 0.7 KB/sec)Downloading: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0-osx-x86_64.exe1932/4958 KB Downloaded: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0-osx-x86_64.exe (4958 KB at 40.7 KB/sec)[INFO] Compiling 1 proto file(s) to /Users/david/grpc/grpc_example/grpc-java-example/target/generated-sources/protobuf/java[INFO] [INFO] --- protobuf-maven-plugin:0.5.0:compile-custom (default) @ grpc ---Downloading: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0.pomDownloaded: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0.pom (2 KB at 3.1 KB/sec)Downloading: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0-osx-x86_64.exeDownloaded: https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/1.4.0/protoc-gen-grpc-java-1.4.0-osx-x86_64.exe (4263 KB at 24.1 KB/sec)[INFO] Compiling 1 proto file(s) to /Users/david/grpc/grpc_example/grpc-java-example/target/generated-sources/protobuf/grpc-java[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 05:06 min[INFO] Finished at: 2017-08-28T11:17:53+08:00[INFO] Final Memory: 9M/182M[INFO] ------------------------------------------------------------------------>>>
这步操作会生成protoco对应的java消息和数据结构,已经grpc相关的stub源文件。
maven会在.m2/repository/io/grpc/protoc-gen-grpc-java/1.4.0下载plugin文件protoc-gen-grpc-java-1.4.0-osx-x86_64.exe,根据最新版本的不同而文件版本不同。
在程序的目录target下,也会下载一份protoc和grpc的plguin文件比如我的mac系统下,对应的2个文件如下的命令行所示。
可以使用命令
target/protoc-plugins/protoc-3.3.0-osx-x86_64.exe -I ../../ --java_out ../../grpc-java/ --plugin=protoc-gen-grpc-java=target/protoc-plugins/protoc-gen-grpc-java-1.4.0-osx-x86_64.exe --grpc-java_out=../../grpc_java_hello ../../hello.proto
Note 要是需要protoc和grpc-java-plugin生成grpc的stub源码,要使用–grpc-java_out参数,否则,没有对应的grpc-stub源码生成。
第三步
将生成的java文件都添加到工程的源码管理中,让工程可以使用这些自动生成的源码。
修改server和client的逻辑
在client和server添加自己的业务逻辑。让client可以通过grpc,使用protobuf传递消息,调用server端方法。
比如我们的proto文件定义:
service Greeter { rpc sayHello(helloRequest) returns (helloResponse) {}}message helloRequest { string name=1;}message helloResponse { string greet=1;}
执行及测试
因为grpc的应用依赖项比较多,简单的执行方法就是在开发IDE环境中启动执行。
- 先以Java Application的方式启动server。
- 再以java Application的方式启动client。
就可以看到执行结果了。
阅读全文
0 0
- java中使用grpc和protobuf
- 在python中使用grpc和protobuf
- Go实战--golang中使用gRPC和Protobuf实现高性能api(golang/protobuf、google.golang.org/grpc)
- Protobuf和GRPC(一)
- 在C#中使用gRPC及protobuf简介
- Android项目使用 protobuf和grpc简单例子
- protobuf + grpc 使用入门 一
- protobuf + grpc 使用入门 二
- java中使用protobuf
- C#中使用gRPC
- 【JAVA】gRPC使用
- protobuf+grpc+examples
- 基于HTTP/2和protobuf的RPC框架GRPC
- VS2015 编译和使用 gRPC
- java中使用Protobuf的实例(Demo)
- java中使用Protobuf的实例(Demo)
- Protobuf在java中使用例子
- java中使用Protobuf的实例(Demo)
- windows编译ffmpeg
- STM32 中断优先级(Cortex-M3)
- 在pycharm中编辑Python程序 循环、IF语句报错的原因(格式问题)
- 删除重复数据少加一个天数导致误删数据
- Nginx简介及使用Nginx实现负载均衡的原理【通俗易懂,言简意赅】
- java中使用grpc和protobuf
- 文件处理命令touch
- php pcntl
- SYN_Flood攻击
- CSS3 word-wrap和word-break长单词的换行
- 合影效果
- ECharts属性设置
- Sreekrishnan Venkateswaran 大师对嵌入式学习的看法(摘抄)
- java 按值传递与引用传递 略解