【问题标题】:How to mock "io.grpc.StatusRuntimeException: UNAVAILABLE: Network closed for unknown reason" when doing grpc call?进行grpc调用时如何模拟“io.grpc.StatusRuntimeException:不可用:网络因未知原因关闭”?
【发布时间】:2022-11-08 01:44:37
【问题描述】:

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

我的想法是将活动时间和活动超时设置得非常小,比如 5mills,这行得通吗?或者有没有其他好的方法可以做到这一点

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

【问题讨论】:

    标签: grpc


    【解决方案1】:

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

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

    建议客户端避免配置他们的 keepalive 远低于一分钟(有关更多详细信息,请参阅服务器强制部分)

    实际上,如果您根本不启动服务器,您会看到StatusRuntimeException: UNAVAILABLE: io exception

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-10
      • 2023-04-10
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      相关资源
      最近更新 更多