diff --git a/spring/Spring Cloud/CircuitBreaker/CircuitBreaker.md b/spring/Spring Cloud/CircuitBreaker/CircuitBreaker.md index 5f95fb8..f00c989 100644 --- a/spring/Spring Cloud/CircuitBreaker/CircuitBreaker.md +++ b/spring/Spring Cloud/CircuitBreaker/CircuitBreaker.md @@ -276,3 +276,37 @@ CircuitBreakerRegistry circuitBreakerRegistry = - 如果recordFailurePredicate不为空,根据`recordFailurePredicate`判断是否该异常应当被视为failure,如果返回为true,将其视为failure,否则继续 - 如果上述都不满足,那么将其视为success +创建自定义`CircuitBreakerConfig`的示例如下所示: +```java +// Create a custom configuration for a CircuitBreaker +CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom() + .failureRateThreshold(50) + .slowCallRateThreshold(50) + .waitDurationInOpenState(Duration.ofMillis(1000)) + .slowCallDurationThreshold(Duration.ofSeconds(2)) + .permittedNumberOfCallsInHalfOpenState(3) + .minimumNumberOfCalls(10) + .slidingWindowType(SlidingWindowType.TIME_BASED) + .slidingWindowSize(5) + .recordException(e -> INTERNAL_SERVER_ERROR + .equals(getResponse().getStatus())) + .recordExceptions(IOException.class, TimeoutException.class) + .ignoreExceptions(BusinessException.class, OtherBusinessException.class) + .build(); + +// Create a CircuitBreakerRegistry with a custom global configuration +CircuitBreakerRegistry circuitBreakerRegistry = + CircuitBreakerRegistry.of(circuitBreakerConfig); + +// Get or create a CircuitBreaker from the CircuitBreakerRegistry +// with the global default configuration +CircuitBreaker circuitBreakerWithDefaultConfig = + circuitBreakerRegistry.circuitBreaker("name1"); + +// Get or create a CircuitBreaker from the CircuitBreakerRegistry +// with a custom configuration +CircuitBreaker circuitBreakerWithCustomConfig = circuitBreakerRegistry + .circuitBreaker("name2", circuitBreakerConfig); +``` + +