我正在尝试为具有一些流API的GRPC服务添加正常关闭。基本上我想在关闭我的应用程序之前等待所有GRPC调用完成。流式调用可能需要几分钟(大文件上传),而且当前的GRPC Java实现似乎不尊重这种用例。
我的服务是用Java实现的,并使用GRPC 1.7.0。所以我只需根据文档调用grpcServer.shutdown()
:
启动有序关机,其中预先存在的呼叫继续,但新呼叫被拒绝。
在此之后,我立即致电grpcServer.awaitTermination()
阻止,直到我的服务处于TERMINATED
状态。
但我发现即使有活跃的流,GRPC在TERMINATED
状态发送服务之前最多等待5秒钟。
似乎grpcServer.shutdown()
没有按照文档所说的那样做,我想知道如何支持我的用例。我认为GRPC应该支持它(似乎是一个非常常见的用例)。如果不是,我将需要手动跟踪活动流,这看起来不像黑客。