|
9 | 9 | import org.springframework.context.annotation.Configuration;
|
10 | 10 |
|
11 | 11 | import java.time.Duration;
|
| 12 | +import java.util.function.Consumer; |
| 13 | +import java.util.function.Function; |
12 | 14 |
|
13 | 15 | @Configuration
|
14 | 16 | public class Resilience4jConfig {
|
15 | 17 |
|
16 | 18 | @Bean
|
17 |
| - public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer() { |
18 |
| - return factory -> factory.configureDefault( |
19 |
| - id -> new Resilience4JConfigBuilder(id) |
20 |
| - .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(4)).build()) |
21 |
| - .circuitBreakerConfig(CircuitBreakerConfig.custom().slidingWindow(5, 5, CircuitBreakerConfig.SlidingWindowType.COUNT_BASED).build()) |
22 |
| - .build()); |
| 19 | + public Customizer<Resilience4JCircuitBreakerFactory> resilience4JCircuitBreakerFactoryCustomizer() { |
| 20 | + return new Customizer<Resilience4JCircuitBreakerFactory>() { |
| 21 | + |
| 22 | + @Override |
| 23 | + public void customize(Resilience4JCircuitBreakerFactory resilience4JCircuitBreakerFactory) { |
| 24 | + // 设置默认的配置 |
| 25 | + resilience4JCircuitBreakerFactory.configureDefault(new Function<String, Resilience4JConfigBuilder.Resilience4JCircuitBreakerConfiguration>() { |
| 26 | + |
| 27 | + @Override |
| 28 | + public Resilience4JConfigBuilder.Resilience4JCircuitBreakerConfiguration apply(String id) { |
| 29 | + // 创建 TimeLimiterConfig 对象 |
| 30 | + TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.ofDefaults(); // 默认 |
| 31 | + // 创建 CircuitBreakerConfig 对象 |
| 32 | + CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.ofDefaults(); // 默认 |
| 33 | + // 创建 Resilience4JCircuitBreakerConfiguration 对象 |
| 34 | + return new Resilience4JConfigBuilder(id) |
| 35 | + .timeLimiterConfig(timeLimiterConfig) |
| 36 | + .circuitBreakerConfig(circuitBreakerConfig) |
| 37 | + .build(); |
| 38 | + } |
| 39 | + |
| 40 | + }); |
| 41 | + // 设置编号为 "slow" 的自定义配置 |
| 42 | + resilience4JCircuitBreakerFactory.configure(new Consumer<Resilience4JConfigBuilder>() { |
| 43 | + @Override |
| 44 | + public void accept(Resilience4JConfigBuilder resilience4JConfigBuilder) { |
| 45 | + // 创建 TimeLimiterConfig 对象 |
| 46 | + TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(4)) // 自定义 |
| 47 | + .build(); |
| 48 | + // 创建 CircuitBreakerConfig 对象 |
| 49 | + CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom() // 自定义 |
| 50 | + .slidingWindow(5, 5, CircuitBreakerConfig.SlidingWindowType.COUNT_BASED) |
| 51 | + .build(); |
| 52 | + // 设置 Resilience4JCircuitBreakerConfiguration 对象 |
| 53 | + resilience4JConfigBuilder |
| 54 | + .timeLimiterConfig(timeLimiterConfig) |
| 55 | + .circuitBreakerConfig(circuitBreakerConfig); |
| 56 | + } |
| 57 | + }, "slow"); |
| 58 | + } |
| 59 | + |
| 60 | + }; |
23 | 61 | }
|
24 | 62 |
|
25 | 63 | // @Bean
|
|
0 commit comments