java/go grpc 生成 service
2022/2/26 17:51:41
本文主要是介绍java/go grpc 生成 service,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
proto 生成
grpc 想 生成 java / go 的代码 的话 ,就得安装 protoc 这个程序
linux 下(arch) 安装 就是 sudo pacman -S protobuf
这样当你想生成 对应 java / go 代码 的时候 就 只要
比如 protoc -I="./protobuf" --go_out=./ ./protobuf/user.proto
这里 --go_out 就是代表你 生成的产品 所在路径 如果是 java 的话就 是 --java_out 参数
结果 截图 如下
你可能会疑问 --go_out=./ 不是 当前 根目录 么 ,为什么 产物 会在 那么深的路径里面 答案在 proto 文件里面
因为指定了 option go_package = "micro-service/api/protobuf/user/v1";
package 包名,所以他就会以 根目录为基础 ,按照 包名层次 创建 了 (下面创建java的时候也同理)
但是 这种创建方法 是 官方 的 ,他 只是 根据 Proto 里面 定义 的实体 创建 了 不同语言的 实体而已 ,service 他 是 没有创建 的 ,
要想 创建 service , 就必须 安装 插件
go grpc service 生成
生成 go grpc service 的插件 叫 protoc-gen-grpc-java
protoc-gen-grpc-java
先下载
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26 $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
下载完成后 cd ~/go/bin
可以看到 已经安装好了
然后 在 把 ~/go/bin 放到环境变量里面 去, 不然 protoc 到时候 找不到 这个插件
$ export PATH="$PATH:$(go env GOPATH)/bin"
注意这个命令 的环境变量只是 当前 shell 有效 ,你重新开个或者 重启 机器就 没有用了 ,要想永久有效的话最好 放 /etc/profile 或者 你自己的 bashrc/zshrc 里面 去
然后 就可以 执行 protoc -I="./protobuf" --go_out=./ --go-grpc_out=./ ./protobuf/user.proto
生成 grpc 实体和服务了
可以看到 service 都给你生成好了
java grpc service 生成
java 找了半天 …… 网上 都是 在 java 项目里面 装 对应 的 maven 插件 ,然后 maven 编译得到 的 ,但是这样 你 的proto 文件 必须在 java 项目里面 ,但是我的 protobuf 是 在 java 和 go 项目外面的 ,所以不适应这种情况
因此也可以 安装 protoc-gen-grpc-java 插件 来解决这个问题
protoc-gen-grpc-java 插件下载地址
下载好后 把他命名成 protoc-java-plugin
放在根目录下
然后 执行 protoc --plugin=protoc-gen-grpc-java=./protoc-java-plugin --java_out="./gateway/src/main/java" --grpc-java_out="./gateway/src/main/java" --proto_path="./protobuf" "./protobuf/user.proto"
就能看到 结果 了!
附带 spring-boot 搭配 grpc 的 文章 https://yidongnan.github.io/grpc-spring-boot-starter/zh-CN/server/getting-started.html
这篇关于java/go grpc 生成 service的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南