grpc-java: настройка enableRetry и maxRetryAttempt не повторяется - PullRequest
0 голосов
/ 30 марта 2019

Grpc-клиент не повторяет попытку и завершается неудачно с UNAVAILABLE: исключение io. В настоящее время я устанавливаю повторные попытки и maxRetryAttempt, как показано ниже:

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

Поддерживаются ли enableRetry и maxRetryAttempt в io.grpc: grpc-netty: 1.18.0?

Спасибо.

1 Ответ

0 голосов
/ 06 апреля 2019

Ни enableRetry(), ни maxRetryAttempts() не настраивают повторные попытки для каждого метода.enableRetry() включил всю «подсистему», так что будет следовать конфигурация;в конце концов, он будет включен по умолчанию, но это не означает, что повторные попытки будут происходить для всех методов.И maxRetryAttempts() ограничивает конфигурацию;если в конфигурации указано сделать 5, а вы установите ограничение 3, то будет выполнено только 3.Но это не увеличивает количество повторных попыток.

«Конфигурация», на которую я продолжаю ссылаться, происходит из конфигурации службы.См. gRFC A6 Client Retries для получения ключей конфигурации.Сам сервисный конфиг в настоящее время также не включен по умолчанию.Для повторных попыток самый простой способ попробовать это - использовать ManagedChannelBuilder.defaultServiceConfig(Map serviceConfig), который был добавлен в v1.20.0 (скоро будет выпущен).Но вы также можете использовать записи TXT в DNS и передавать -Dio.grpc.internal.DnsNameResolverProvider.enable_service_config=true при выполнении вашего двоичного файла.

Повторные попытки и конфигурирование службы в настоящее время являются экспериментальными.

...