如何在生成的 grpc 类中覆盖 SERVICE_NAME

发布于 2025-01-13 23:44:51 字数 916 浏览 6 评论 0原文

我有 2 个不同的原始文件,它们具有相同的包名称和相同的消息名称,因此当我尝试编译它们时 - 存在冲突

syntax = "proto3";

package foobar;

service API {
    rpc Foo (FooReq) returns (FooRsp);
}

message FooReq {}

message FooRsp {
    string Bar = 1;
}
syntax = "proto3";

package foobar;

service AnotherAPI {
    rpc Foo (FooReq) returns (FooRsp);
}

message FooReq {}

message FooRsp {
    string Bar = 1;
}

如果我尝试将其中一个包重命名为

package renamed.foobar;

生成的 AnotherAPIGrpc 类中的 SERVICE_NAME 则变得无效

public static final String SERVICE_NAME = "renamed.foobar.AnotherAPI";

,并且尝试时出错调用方法

io.grpc.StatusRuntimeException: UNIMPLMENTED:unknown service returned.foobar.AnotherAPI

如果我为两个原型添加不同的 option java_package 值,仍然存在错误,例如 协议失败:api1.proto:10:9:“foobar.FooReq”已在文件“api2.proto”中定义。

是否可以解决此问题?

I have 2 different proto files with same package names and same message names, so when I try to compile them - there are conflicts

syntax = "proto3";

package foobar;

service API {
    rpc Foo (FooReq) returns (FooRsp);
}

message FooReq {}

message FooRsp {
    string Bar = 1;
}
syntax = "proto3";

package foobar;

service AnotherAPI {
    rpc Foo (FooReq) returns (FooRsp);
}

message FooReq {}

message FooRsp {
    string Bar = 1;
}

If I try to rename one of the packages to

package renamed.foobar;

SERVICE_NAME in generated AnotherAPIGrpc class becomes invalid

public static final String SERVICE_NAME = "renamed.foobar.AnotherAPI";

and I have error on trying to call method

io.grpc.StatusRuntimeException: UNIMPLEMENTED: unknown service renamed.foobar.AnotherAPI

If I add different option java_package values for both protos, there are still errors like
PROTOC FAILED: api1.proto:10:9: "foobar.FooReq" is already defined in file "api2.proto".

Is it possible to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文