组件版本
<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() 方法可以覆盖它的默认配置