![](/img/trans.png)
[英]How to manage app crashing when grpc blockingstub is called with deadline
[英]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.