做 grpc 调用时如何模拟"io.grpc.StatusRuntimeException: UNAVAILABLE: Network closed for unknown reason"?



我正在为我的grpc调用实现重试逻辑,当它看到StatusRuntimeException时,它会重试几次。我的问题是如何模拟调用将抛出StatusRuntimeException?

我的想法是将生存时间和生存超时设置得很小,比如5分钟,这样有效吗?或者有没有其他好的方法来实现

NettyChannelBuilder.forAddress()
.keepAliveTime(5, TimeUnit.MILLISECONDS)
.keepAliveTimeout(5, TimeUnit.MILLISECONDS)
.keepAliveWithoutCalls(true)

grpc-java具有开箱即用的重试功能,您可以尝试:https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/retrying

gRPC A8建议永远不要在1分钟内设置保活时间,如果是这样的话,你会从服务器上看到GOAWAY。

建议客户端避免在一分钟以下配置其保活(有关更多详细信息,请参阅服务器强制部分(

实际上,如果你只是不启动服务器,你会看到StatusRuntimeException: UNAVAILABLE: io exception

最新更新