diff --git a/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/config/Resilience4jConfig.java b/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/config/Resilience4jConfig.java index 93269924..ab56c7b2 100644 --- a/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/config/Resilience4jConfig.java +++ b/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/config/Resilience4jConfig.java @@ -9,17 +9,55 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.time.Duration; +import java.util.function.Consumer; +import java.util.function.Function; @Configuration public class Resilience4jConfig { @Bean - public Customizer defaultCustomizer() { - return factory -> factory.configureDefault( - id -> new Resilience4JConfigBuilder(id) - .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(4)).build()) - .circuitBreakerConfig(CircuitBreakerConfig.custom().slidingWindow(5, 5, CircuitBreakerConfig.SlidingWindowType.COUNT_BASED).build()) - .build()); + public Customizer resilience4JCircuitBreakerFactoryCustomizer() { + return new Customizer() { + + @Override + public void customize(Resilience4JCircuitBreakerFactory resilience4JCircuitBreakerFactory) { + // 设置默认的配置 + resilience4JCircuitBreakerFactory.configureDefault(new Function() { + + @Override + public Resilience4JConfigBuilder.Resilience4JCircuitBreakerConfiguration apply(String id) { + // 创建 TimeLimiterConfig 对象 + TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.ofDefaults(); // 默认 + // 创建 CircuitBreakerConfig 对象 + CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.ofDefaults(); // 默认 + // 创建 Resilience4JCircuitBreakerConfiguration 对象 + return new Resilience4JConfigBuilder(id) + .timeLimiterConfig(timeLimiterConfig) + .circuitBreakerConfig(circuitBreakerConfig) + .build(); + } + + }); + // 设置编号为 "slow" 的自定义配置 + resilience4JCircuitBreakerFactory.configure(new Consumer() { + @Override + public void accept(Resilience4JConfigBuilder resilience4JConfigBuilder) { + // 创建 TimeLimiterConfig 对象 + TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(4)) // 自定义 + .build(); + // 创建 CircuitBreakerConfig 对象 + CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom() // 自定义 + .slidingWindow(5, 5, CircuitBreakerConfig.SlidingWindowType.COUNT_BASED) + .build(); + // 设置 Resilience4JCircuitBreakerConfiguration 对象 + resilience4JConfigBuilder + .timeLimiterConfig(timeLimiterConfig) + .circuitBreakerConfig(circuitBreakerConfig); + } + }, "slow"); + } + + }; } // @Bean diff --git a/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/controller/DemoController.java b/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/controller/DemoController.java index f3306d85..7e9073d2 100644 --- a/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/controller/DemoController.java +++ b/labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/controller/DemoController.java @@ -27,7 +27,7 @@ public class DemoController { @GetMapping("/get_user") public String getUser(@RequestParam("id") Integer id) { - return circuitBreakerFactory.create("backendA").run(new Supplier() { + return circuitBreakerFactory.create("slow").run(new Supplier() { @Override public String get() {