laz*_*sky 5 java future stub grpc grpc-java
最近,我正在研究构建 gRPC 客户端-服务器交互。
我写了一个 gRPC 服务:
service SearchService {
rpc Find (SearchReq) returns (SearchRes);
}
Run Code Online (Sandbox Code Playgroud)
然后我应该使用存根(另一个java应用程序)在客户端调用它。
这两种类型的存根有什么区别?
SearchServiceGrpc.SearchServiceFutureStub futureStub = SearchServiceGrpc.newFutureStub(channel);
SearchServiceGrpc.SearchServiceBlockingStub blockingStub = SearchServiceGrpc.newBlockingStub(channel);
Run Code Online (Sandbox Code Playgroud)
blockingStub.find(request);- 用于阻止
futureStub.find(request).get();- 为了未来
我了解 Java 中的 Futures 是如何工作的,但我不明白 gRPC 内部发生了什么以及哪种类型的存根调用更有效率
我在谷歌上没有找到关于它的信息。
谢谢!
各种存根是使用相同的异步 API (ClientCall) 实现的。您的选择对于 grpc 内部并不重要。
但 API 具有正常的预期限制。例如:如果您使用阻塞,则在 RPC 完成之前无法使用该线程。
| 归档时间: |
|
| 查看次数: |
10203 次 |
| 最近记录: |