Java 如何在spring引导中设置重试配置获取?

Java 如何在spring引导中设置重试配置获取?,java,spring,spring-boot,kotlin,spring-cloud,Java,Spring,Spring Boot,Kotlin,Spring Cloud,我有配置服务器,应用程序从该服务器获取配置。 我想设置抓取的重试机制。如果配置服务器不可用,应用程序应发送10分钟的请求 在spring文档中,我找到了next配置 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=20

我有配置服务器,应用程序从该服务器获取配置。 我想设置抓取的重试机制。如果配置服务器不可用,应用程序应发送10分钟的请求

在spring文档中,我找到了next配置

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。根据文档,这将暂停您的应用程序,但出现异常,并且不会重试连接


来源:

我通过在上下文中添加next@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 -->

org.springframework.boot
弹簧启动机aop
org.springframework.retry
春季重试
1.2.4.1发布

答案是前两个答案的组合:

  • 您需要设置
    spring.cloud.config.fail fast=true
  • 您还需要将
    spring retry
    spring boot starter aop
    添加到类路径中
请参阅文档