spring cloud circuit breaker文档阅读
This commit is contained in:
@@ -20,3 +20,81 @@ public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer() {
|
|||||||
```
|
```
|
||||||
### 自定义ExecutorService
|
### 自定义ExecutorService
|
||||||
如果想要自定义执行circuit breaker的`ExecutorService`,可以通过Resilience4JCircuitBreakerFactor来指定。
|
如果想要自定义执行circuit breaker的`ExecutorService`,可以通过Resilience4JCircuitBreakerFactor来指定。
|
||||||
|
例如,想要指定一个context aware ExecutorService,可以按如下所示:
|
||||||
|
```java
|
||||||
|
@Bean
|
||||||
|
public Customizer<ReactiveResilience4JCircuitBreakerFactory> defaultCustomizer() {
|
||||||
|
return factory -> {
|
||||||
|
ContextAwareScheduledThreadPoolExecutor executor = ContextAwareScheduledThreadPoolExecutor.newScheduledThreadPool().corePoolSize(5)
|
||||||
|
.build();
|
||||||
|
factory.configureExecutorService(executor);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### 指定Circuit Breaker 配置
|
||||||
|
类似为所有Circuit Breakers指定默认配置,也能以如下方式为特定Circuit Breaker指定配置:
|
||||||
|
```java
|
||||||
|
@Bean
|
||||||
|
public Customizer<Resilience4JCircuitBreakerFactory> slowCustomizer() {
|
||||||
|
return factory -> factory.configure(builder -> builder.circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())
|
||||||
|
.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(2)).build()), "slow");
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### Circuit Breaker属性配置
|
||||||
|
可以在配置文件中指定`CircuitBreaker`和`TimeLimiter`配置,配置文件中指定的配置比Customizer中指定的配置优先级更高。
|
||||||
|
优先级从上到下递减:
|
||||||
|
- 方法级别(id)配置 - 针对指定的方法或操作
|
||||||
|
- service级别(group)配置 - 针对指定应用的service或操作
|
||||||
|
- 全局默认配置
|
||||||
|
|
||||||
|
#### 全局默认
|
||||||
|
```yml
|
||||||
|
resilience4j.circuitbreaker:
|
||||||
|
configs:
|
||||||
|
default:
|
||||||
|
registerHealthIndicator: true
|
||||||
|
slidingWindowSize: 50
|
||||||
|
|
||||||
|
resilience4j.timelimiter:
|
||||||
|
configs:
|
||||||
|
default:
|
||||||
|
timeoutDuration: 5s
|
||||||
|
cancelRunningFuture: true
|
||||||
|
```
|
||||||
|
#### Configs Properties Configuration
|
||||||
|
```yml
|
||||||
|
resilience4j.circuitbreaker:
|
||||||
|
configs:
|
||||||
|
groupA:
|
||||||
|
registerHealthIndicator: true
|
||||||
|
slidingWindowSize: 200
|
||||||
|
|
||||||
|
resilience4j.timelimiter:
|
||||||
|
configs:
|
||||||
|
groupC:
|
||||||
|
timeoutDuration: 3s
|
||||||
|
cancelRunningFuture: true
|
||||||
|
```
|
||||||
|
#### 实例属性设置
|
||||||
|
```yml
|
||||||
|
resilience4j.circuitbreaker:
|
||||||
|
instances:
|
||||||
|
backendA:
|
||||||
|
registerHealthIndicator: true
|
||||||
|
slidingWindowSize: 100
|
||||||
|
backendB:
|
||||||
|
registerHealthIndicator: true
|
||||||
|
slidingWindowSize: 10
|
||||||
|
permittedNumberOfCallsInHalfOpenState: 3
|
||||||
|
slidingWindowType: TIME_BASED
|
||||||
|
recordFailurePredicate: io.github.robwin.exception.RecordFailurePredicate
|
||||||
|
|
||||||
|
resilience4j.timelimiter:
|
||||||
|
instances:
|
||||||
|
backendA:
|
||||||
|
timeoutDuration: 2s
|
||||||
|
cancelRunningFuture: true
|
||||||
|
backendB:
|
||||||
|
timeoutDuration: 1s
|
||||||
|
cancelRunningFuture: false
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user