目录
前言
由于hystrix停止更新,新版本的cloud支持resilience4j作为熔断框架
文中仅实现了断路器和限时功能
- 建议使用spring initializr创建服务
- 文中springboot版本为2.4.6
一、resilience4j依赖
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-cloud2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId>
</dependency>
- 官方的依赖只有github上的部分功能,需要resilience4j-spring-cloud2依赖做补充
二、resilience4j使用
- io.github.resilience4j:resilience4j-spring-cloud2:1.7.0支持注解
1.yml配置
resilience4j.circuitbreaker:
instances:
backendA:
registerHealthIndicator: true
slidingWindowSize: 100
backendB:
registerHealthIndicator: true
slidingWindowSize: 10
permittedNumberOfCallsInHalfOpenState: 3
slidingWindowType: TIME_BASED
minimumNumberOfCalls: 20
waitDurationInOpenState: 50s
failureRateThreshold: 50
eventConsumerBufferSize: 10
# recordFailurePredicate: io.github.robwin.exception.RecordFailurePredicate
resilience4j.retry:
instances:
backendA:
maxAttempts: 3
waitDuration: 10s
enableExponentialBackoff: true
exponentialBackoffMultiplier: 2
retryExceptions:
- org.springframework.web.client