使用流正常关闭Java GRPC服务器

时间:2017-10-12 17:54:57

标签: grpc-java

我正在尝试为具有一些流API的GRPC服务添加正常关闭。基本上我想在关闭我的应用程序之前等待所有GRPC调用完成。流式调用可能需要几分钟(大文件上传),而且当前的GRPC Java实现似乎不尊重这种用例。

我的服务是用Java实现的,并使用GRPC 1.7.0。所以我只需根据文档调用grpcServer.shutdown()

  

启动有序关机,其中预先存在的呼叫继续,但新呼叫被拒绝。

在此之后,我立即致电grpcServer.awaitTermination()阻止,直到我的服务处于TERMINATED状态。

但我发现即使有活跃的流,GRP​​C在TERMINATED状态发送服务之前最多等待5秒钟。

似乎grpcServer.shutdown()没有按照文档所说的那样做,我想知道如何支持我的用例。我认为GRPC应该支持它(似乎是一个非常常见的用例)。如果不是,我将需要手动跟踪活动流,这看起来不像黑客。

1 个答案:

答案 0 :(得分:1)

似乎并不那么容易,所以我写了blog post

TLDR:需要实现开放流的计数。