From 6e7fd597647980a491f2a65606af9ad5800e5de2 Mon Sep 17 00:00:00 2001 From: Rikako Wu <496063163@qq.com> Date: Fri, 21 Apr 2023 15:28:40 +0800 Subject: [PATCH] =?UTF-8?q?spring=20cloud=20circuit=20breaker=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E9=98=85=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Spring Cloud Circuit Breaker.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 spring/Spring Cloud/Spring Cloud Circuit Breaker.md diff --git a/spring/Spring Cloud/Spring Cloud Circuit Breaker.md b/spring/Spring Cloud/Spring Cloud Circuit Breaker.md new file mode 100644 index 0000000..7541639 --- /dev/null +++ b/spring/Spring Cloud/Spring Cloud Circuit Breaker.md @@ -0,0 +1,22 @@ +# Spring Cloud Circuit Breaker +Spring Cloud Circuit Breaker项目包含Resilience4J实现和Spring Retry实现。 +## 配置Resilience4J Circuit Breakers +关于resilience4J Circuit Breakers实现,拥有如下两个启动器,一个用于响应式项目,另一个用于非响应式项目: +- `org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j` +- `org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j` + +### 关闭自动装配 +可以通过设置`spring.cloud.circuitbreaker.resilience4j.enabled`为false来关闭Resilience4J的自动装配 +### 默认配置 +如果想要为所有的circuit breaker提供默认配置,可以创建一个`Customizer` bean对象,该bean对象接收一个`Resilience4JCircuitBreakerFactory`类型参数。configureDefault方法可以用于提供默认的配置: +```java +@Bean +public Customizer defaultCustomizer() { + return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id) + .timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(4)).build()) + .circuitBreakerConfig(CircuitBreakerConfig.ofDefaults()) + .build()); +} +``` +### 自定义ExecutorService +如果想要自定义执行circuit breaker的`ExecutorService`,可以通过Resilience4JCircuitBreakerFactor来指定。