grpc-java: 设置 enableRetry 和 maxRetryAttempt 不是 Retrying

grpc-java: setting enableRetry and maxRetryAttempt is not Retrying

Grpc 客户端未重试并因不可用而失败:io 异常。目前我正在设置重试和 maxRetryAttempt,如下所示:

Channel channel = NettyChannelBuilder.forAddress(address.getTarget(), address.getPort())
            .enableRetry()
            .maxRetryAttempts(3)
            .intercept(interceptors)
            .sslContext(context.build())
            .build();

io.grpc:grpc-netty:1.18.0 是否支持 enableRetry 和 maxRetryAttempt?

谢谢。

enableRetry()maxRetryAttempts() 都没有在每个方法的基础上配置重试。 enableRetry() 启用了整个 "subsystem," 以便遵循配置;最终它将默认启用,但这并不意味着所有方法都会发生重试。并且maxRetryAttempts()限制了配置;如果配置要求执行 5 次,而您将限制设置为 3 次,则只会执行 3 次。但它不会增加重试次数。

我一直提到的"configuration"来自服务配置。有关配置键,请参阅 gRFC A6 Client Retries。默认情况下,服务配置本身目前也未启用。对于重试,最简单的尝试方法是使用添加到 v1.20.0(即将发布)的 ManagedChannelBuilder.defaultServiceConfig(Map serviceConfig)。但是您也可以在 DNS 中使用 TXT 记录并在执行二进制文件时传递 -Dio.grpc.internal.DnsNameResolverProvider.enable_service_config=true

重试和服务配置目前都是实验性的。