rpc 指令
Goctl Rpc是goctl
脚手架下的一个rpc服务代码生成模块,支持proto模板生成和rpc服务代码生成,通过此工具生成代码你只需要关注业务逻辑编写而不用去编写一些重复性的代码。这使得我们把精力重心放在业务上,从而加快了开发效率且降低了代码出错率。
#
特性- 简单易用
- 快速提升开发效率
- 出错率低
- 贴近protoc
#
快速开始#
方式一:快速生成greet服务通过命令 goctl rpc new ${servieName}
生成
如生成greet rpc服务:
执行后代码结构如下:
tip
新版本目录详见 rpc目录
#
方式二:通过指定proto生成rpc服务生成proto模板
生成rpc服务代码
#
准备工作- 安装了go环境
- 安装了protoc & protoc-gen-go,并且已经设置环境变量
- 更多问题请见 注意事项
#
用法#
rpc服务生成用法你可以理解为 zrpc 代码生成是用 goctl rpc $protoc_command --zrpc_out=${output}
模板,如原来生成 grpc 代码指令为
则生成 zrpc 代码指令就为
tip
- --go_out 与 --go-grpc_out 生成的最终目录必须一致
- --go_out & --go-grpc_out 和 --zrpc_out 的生成的最终目录必须不为同一目录,否则pb.go和_grpc.pb.go就与main函数同级了,这是不允许的。 --go_out 与 --go-grpc_out 生产的目录会受 --go_opt 和 --grpc-go_opt 和proto源文件中 go_package值的影响,要想理解这里的生成逻辑,建议阅读 官方文文档:Go Generated Code
#
开发人员需要做什么关注业务代码编写,将重复性、与业务无关的工作交给goctl,生成好rpc服务代码后,开发人员仅需要修改
- 服务中的配置文件编写(etc/xx.json、internal/config/config.go)
- 服务中业务逻辑编写(internal/logic/xxlogic.go)
- 服务中资源上下文的编写(internal/svc/servicecontext.go)
#
注意事项proto暂不支持多文件同时生成
proto不支持外部依赖包引入,message不支持inline
目前main文件、shared文件、handler文件会被强制覆盖,而和开发人员手动需要编写的则不会覆盖生成,这一类在代码头部均有
的标识,请注意不要在里面写业务性代码;也不要将它写在业务性代码里面。
#
proto import- 对于rpc中的requestType和returnType必须在main proto文件定义,对于proto中的message可以像protoc一样import其他proto文件。
proto示例: