Linux安装gRPC
Brew安装
https://github.com/Linuxbrew/brew
- 安装命令
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)" |
- 安装开发工具
1
2
3
4Debian, Ubuntu, etc.
sudo apt-get install build-essential
Fedora, Red Hat, CentOS, etc.
sudo yum groupinstall 'Development Tools'
对于Arch系则不需要
- 增加环境变量
添加以下内容到.bashrc1
2
3echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >>~/.profile
echo 'export MANPATH="/home/linuxbrew/.linuxbrew/share/man:$MANPATH"' >>~/.profile
echo 'export INFOPATH="/home/linuxbrew/.linuxbrew/share/info:$INFOPATH"' >>~/.profile
- 安装GCC
1 | brew install gcc |
- 安装gRPC
1 | brew tap grpc/grpc |
定义接口文件
在Protocol Buffers服务接口的方法定义中是不能使用基本类型的,方法参数和返回值都必须是自定义的 message 类型。
1 | syntax = "proto3"; |
生成序序列化和反序列化代码
格式:protoc -I=$SRC_DIR –java_out=$DST_DIR $SRC_DIR/jr.proto
例如,protoc -I=. –java_out=. helloworld.proto
生成通信服务相关代码
编译插件protoc-gen-grpc-java
1
2
3
4
5git clone https://github.com/grpc/grpc-java
cd compiler
../gradlew install生成代码
1 | protoc --plugin=protoc-gen-grpc-java=/path/protoc-gen-grpc-java --grpc-java_out=$DST_DIR --proto_path=$SRC_DIR $SRC_DIR/jr.proto |
例如1
protoc --plugin=protoc-gen-grpc-java=/home/sulang/git/grpc-java/compiler/build/exe/java_plugin/protoc-gen-grpc-java --grpc-java_out=. --proto_path=. any.proto
启动RPC服务器
Spring Boot 依赖库
1 | <!-- gRPC --> |
实现Service接口
1 | class) (KYCServiceGrpc:: |
application.properties 配置信息
1 | # 默认地址是0.0.0.0:9090 |
多文件关联生成命令
int321
protoc accounting-common.proto accounting-order-service.proto --java_out=.
Client
Error: java.lang.ClassNotFoundException: org/eclipse/jetty/alpn/ALPN
Solution:1
2
3
4
5<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-tcnative-boringssl-static</artifactId>
<version>2.0.7.Final</version>
</dependency>
doc
/etc/pacman.conf
1 | [home_estan_protoc-gen-doc_Arch_Extra] |
1 | pacman -Syu |
1 | protoc --plugin=protoc-gen-doc=./protoc-gen-doc --proto_path=./protos/ --doc_out=./doc --doc_opt=html,index.html protos/*.proto |