spring cloud circuit breaker文档阅读
This commit is contained in:
@@ -20,3 +20,81 @@ public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer() {
|
||||
```
|
||||
### 自定义ExecutorService
|
||||
如果想要自定义执行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