java - 在 gRPC Java 应用程序中使客户端流同步/阻塞
问题描述
我想使客户端流式传输阻塞。该协议的定义如下所示:
rpc RecordRoute(stream Point) 返回 (RouteSummary) {}
正如文档中所说,对于某些类型的流式调用,只能使用异步存根:
对服务器进行非阻塞调用的非阻塞/异步存根,其中异步返回响应。您只能使用异步存根进行某些类型的流式调用。
那么我怎样才能使调用阻塞/同步呢?可能吗?
解决方案
阻塞存根只能用于客户端仅发送单个请求的 RPC。对于客户端流式调用,您只能使用异步存根。生成的阻塞存根代码不包含客户端流式传输或双向流式传输方法的 RPC 方法。
如果你想避免由于异步请求造成的过度缓冲,你可以使用CallStreamObServer
API 来做手动流控制。对于一些外部同步,例如 a CountDownLatch
,异步 API 可以同步运行。了解gRPC 的手动流控制示例是如何工作的。
推荐阅读
- kubernetes - 将 Helm Hub 添加为 Artifactory 上的远程存储库
- google-sheets - Google表格搜索值并返回存在该值的多行的某些列
- wagtail - 鹡鸰将代码插入主体(流场)
- github - 如何使用 netlify 在 github 中显示报告文件?
- vue.js - 方法 vuejs 中的 if-else 语句
- ionic3 - 离子检查每个请求的 jwt 令牌过期
- javascript - 如何防止 Node IIFE 函数通过注入运行?
- c# - Response.HeadersWritten in ASP.NET Core 2
- python - 在哪里可以找到已实施的 DQfDAgent?
- angular - css 类的 Angular HostBinding 测试