resilience4j整合openfeign超时时间设置

1,182 阅读1分钟

组件版本

     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
        </dependencyManagement>
        
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
        </dependency>
        <dependency>
            <groupId>io.github.resilience4j</groupId>
            <artifactId>resilience4j-spring-cloud2</artifactId>
            <version>1.7.0</version>
        </dependency>       

设置超时时间部分

@Resource
Resilience4JCircuitBreakerFactory resilience4JCircuitBreakerFactory;

@PostConstruct
public void Setresilience4jCircuitBreakerFactory() {
        Function<String, Resilience4JConfigBuilder.Resilience4JCircuitBreakerConfiguration> defaultConfiguration = id -> new Resilience4JConfigBuilder(id)
                .circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())
                .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(10)).cancelRunningFuture(true).build())
                .build();
        resilience4JCircuitBreakerFactory.configureDefault(defaultConfiguration);
    }

调用流程

1.Resilience4JCircuitBreakerFactory 生成Resilience4JCircuitBreaker对象 , 此对象对 xxxRpc对象进行增强
2.Resilience4JCircuitBreaker 首次生成调用Resilience4JCircuitBreakerFactory 持有的一个属性defaultConfiguration, 这个再代码里写死了 超时时间策略为1s;
3.Resilience4JCircuitBreakerFactory提供了configureDefault() 方法可以覆盖它的默认配置;