go - 我应该如何使用 protoc-gen-go-grpc?

标签 go protocol-buffers grpc proto grpc-go

我正在尝试为一些 Protocol Buffers 和 gRPC 服务生成 Go 代码。

在过去,我使用了 https://github.com/golang/protobuf 和一个看起来像这样的生成命令:

//go:generate protoc --proto_path=. --go-out=. --go_opt=paths=source_relative <file>.proto
//go:generate protoc --proto_path=. --go_grpc_out=. --go_grpc_opt=paths=source_relative <file>.proto

此方法工作得很好,但该代码库已被 google.golang.org/protobufgoogle.golang.org/grpc 取代。

据我所知,这是有意拆分以分离 protobuf 和 gRPC 项目发布周期。

使用新的存储库,我安装了这样的工具:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

这两个工具都已安装,并且在路径上可见。我遇到的问题是 protocprotoc-gen-go 正在寻找较旧的工具 - protoc-gen-go_grpc。注意下划线。

我一直在阅读我能找到的所有文档和 Github 问题,但还没有弄清楚我打算如何使用新的 protoc-gen-go-grpc .注意破折号。

$ echo $GOPATH
/Users/<username>/dev/go

$ echo $GOBIN
/Users/<username>/dev/go/bin

$ which protoc
/opt/homebrew/bin/protoc

$ which protoc-gen-go
/Users/<username>/dev/go/bin/protoc-gen-go

$ which protoc-gen-go_grpc
protoc-gen-go_grpc not found

$ which protoc-gen-go-grpc
/Users/<username>/dev/go/bin/protoc-gen-go-grpc

最佳答案

我的问题很容易解决,但很难找到。

运行 protoc 时,使用 --go_grpc_out 标志查找 protoc-gen-go_grpc

运行 protoc 时,使用 --go-grpc_out 标志查找 protoc-gen-go-grpc

似乎 protoc 没有定义明确、记录在案的标志,并且在提供不正确的标志时会出错,他们正在使用标志来确定要使用的插件。如果您拼错了标志,它会查找错误的插件。

关于go - 我应该如何使用 protoc-gen-go-grpc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70643183/

相关文章:

protocol-buffers - Protocol Buffers 消息中的集合?

java - 在 gRPC 中使用直接类以避免数据复制

redis - 使用 gRPC 传输文件

戈尔姆 |如何使用扫描和预加载

我可以在 Google App Engine 上使用 CGo 吗?

c++ - 我需要用 Protobuf 存储长度信息吗?

protocol-buffers - 使用基于 Java 的 Grpc 服务器和基于 C# 的客户端时传输失败错误

go - 有没有办法将 Sentry 消息输出到控制台

http - 如何使用 http 而不是 https 在 Heroku 上提供 Golang 应用程序?

qt - 使用 qmake 链接 .proto 文件