用于Go的Protobuf(gRPC)代码生成器创建无效代码

时间:2017-05-03 19:58:49

标签: go protocol-buffers grpc

当我的proto文件使用流式响应定义服务时,一切正常。但是,当我返回单个值时,生成的代码无效!

原型文件

syntax = "proto3";

package analyticsServicesGlobal;
option go_package = "generated/analyticsServices";

service HealthCheck {
    rpc Health (HealthCheckParam) returns (HealthCheckPayload) {}
}

message HealthCheckPayload {
    string message = 1;
}

message HealthCheckParam {
    string response = 1;
}

代码生成完成没有问题:protoc --go_out=plugins=grpc:$GOPATH/src/gauss minimal.proto

ide和命令行编译在生成的Go代码中返回此错误:

./minimal.pb.go:130: cannot use handler (type func("gauss/vendor/golang.org/x/net/context".Context, interface {}) (interface {}, error)) as type grpc.UnaryHandler in argument to interceptor
./minimal.pb.go:139: cannot use _HealthCheck_Health_Handler (type func(interface {}, "gauss/vendor/golang.org/x/net/context".Context, func(interface {}) error, grpc.UnaryServerInterceptor) (interface {}, error)) as type grpc.methodHandler in field value

此问题显示任何服务,其中返回非流响应。我已经创建了这个最小的proto文件来演示,但是每个类似的服务定义都有相同的问题。

我在OSX上使用Go版本1.8.1,protoc版本3.3.0,以及Go go get -u github.com/golang/protobuf/{proto,protoc-gen-go}的最新protoc插件

由于缺乏关于这个问题的报道,我确定做错了什么 - 但我看不出是什么。任何建议都表示赞赏!

0 个答案:

没有答案