У меня есть конфигурационный сервер, и приложение получает конфигурации с этого сервера. Я хочу настроить механизм повторной загрузки. Если конфигурационный сервер недоступен, приложение отправляет запросы в течение 10 минут.
В весенних документах нашел следующие конфиги
spring.cloud.config.uri=http://localhost:9090
spring.cloud.config.fail-fast=true
spring.cloud.config.retry.max-interval=10000
spring.cloud.config.retry.max-attempts=2000
Но они ничего не меняют. Мое приложение не выполняет запросы на повторную попытку, оно просто терпит неудачу
Caused by: java.net.ConnectException: Connection refused: connect
(Сервер конфигурации в этот момент не работает)
Что я делаю неправильно? Есть способ решить мою проблему?




Вы устанавливаете spring.cloud.config.fail-fast в значение true. Согласно документам, это остановит ваше приложение с исключением и не будет повторять попытки подключения.
Я решил свою проблему, добавив следующий @Bean в контекст
@Bean
public RetryOperationsInterceptor configServerRetryInterceptor(RetryProperties properties) {
return RetryInterceptorBuilder
.stateless()
.backOffOptions(properties.getInitialInterval(),
properties.getMultiplier(),
properties.getMaxInterval())
.maxAttempts(properties.getMaxAttempts()).build();
}
на основе информации в вопросе, я думаю, вам не хватает следующих зависимостей от вашего пути к классу:
<!-- for auto retry -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.2.4.RELEASE</version>
</dependency>
<!-- for auto retry -->
Ответ представляет собой комбинацию первых двух ответов:
spring.cloud.config.fail-fast=truespring-retry и spring-boot-starter-aop в ваш путь к классам.См. Документацию здесь.