簡體   English   中英

gRPC protobuffers Java無法為BlockingStub設置Call​​Options

[英]gRPC protobuffers Java cannot set CallOptions for BlockingStub

我有一個簡單的原始文件,用於創建我的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擴展了AbstractStub AbstractStub具有with*方法,這些方法與CallOptions上的方法CallOptions

因此,您想要執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM