微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

grpc 异步请求,无需等待结果

如何解决grpc 异步请求,无需等待结果

我有两个 netty java grpc 服务器:ServerAServerB

我的一个请求流如下所示:

  1. 客户端将 rpc 发送到 ServerA
  2. ServerA 使 rpc 异步到 ServerB
  3. 无需等待异步 rpc 的结果,即可完成对 ServerA 的请求。即逻辑只是使异步 rpc 然后完成。

这里会发生什么? ServerA 上正在处理客户端请求的线程是否在使异步 rpc 的线程完成之前等待退出?异步请求是否有可能永远不会通过?或者它可能因为客户不在而出错?

解决方法

gRPC 线程模型与类似 Servlet 的线程模型不同,后者的每个请求都在该请求的生命周期内绑定到一个线程。

gRPC 不考虑示例中的交互,并且会“正常工作”而无需任何线程等待。有一个警告。 io.grpc.Context 用于自动传播截止日期和取消。有了它,gRPC 可以注意到一个 RPC 与另一个相关联,并在初始 RPC 完成时取消异步 RPC。可以使用 Context.fork() 来避免这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。