gpt4 book ai didi

java - gRPC protobuffers Java 无法为 BlockingStub 设置 CallOptions

转载 作者:行者123 更新时间:2023-11-30 08:07:15 31 4
gpt4 key购买 nike

我有一个简单的原型(prototype)文件,用于创建我的 java 类

syntax = "proto3";

option java_package = "some.project.grpc";
option java_multiple_files = true;

message PingRequest { }
message PingResponse { }

service MyServer {
rpc Ping(PingRequest) returns (PingResponse);
}

使用 gradle 和 google protobuf 插件 ( https://github.com/google/protobuf-gradle-plugin ) 我创建了我的类

gradle generateProto

生成的 MyServerGrpc 有一个内部类 MyServerBlockingStub,它有两个构造函数:

private MyServerBlockingStub(io.grpc.Channel channel) { ... }
private MyServerBlockingStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { ... }

MyServerGrpc 类确实将第一个公开为 newBlockingStub(io.grpc.Channel channel) 但不是我需要的第二个。

像这样,我无法设置任何调用选项,例如超时。我可以轻松地操作生成的文件以允许我访问我需要的构造函数,但这些更改会在下一代中丢失 - 所以这不是一个真正的选择。

因为这看起来很容易解决,所以我在想:

  • 我是否遗漏了一些会向我公开此构造函数的选项?
  • 是否打算在我尚未找到的其他地方设置 CallOptions 对象?

最佳答案

MyServerGrpc 扩展 AbstractStubAbstractStub 具有与 CallOptions 相同的 with* 方法。

所以你想做这样的事情:

newBlockingStub(yourChannel).withDeadlineAfter(1, TimeUnit.MINUTES)

关于java - gRPC protobuffers Java 无法为 BlockingStub 设置 CallOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807866/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com