|
@@ -4,15 +4,6 @@ date: 2020-06-13
|
|
|
tags: Java
|
|
|
---
|
|
|
|
|
|
-### 目录
|
|
|
-
|
|
|
-* [介绍](#-5)
|
|
|
-* [Resilience4j配置](#resilience4j-8)
|
|
|
-*
|
|
|
- - [创建配置实例](#-12)
|
|
|
- - [各个配置项含义](#-22)
|
|
|
-* [配置如何用](#-58)
|
|
|
-* [结语](#-75)
|
|
|
|
|
|
# 介绍
|
|
|
|
|
@@ -27,17 +18,19 @@ tags: Java
|
|
|
|
|
|
```java
|
|
|
|
|
|
-CircuitBreakerConfig.ofDefaults();
|
|
|
+ CircuitBreakerConfig.ofDefaults();
|
|
|
|
|
|
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
|
|
|
.slidingWindowSize(10)
|
|
|
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
|
|
|
.build();
|
|
|
+
|
|
|
```
|
|
|
|
|
|
## 各个配置项含义
|
|
|
|
|
|
```java
|
|
|
+
|
|
|
CircuitBreakerConfig.custom()
|
|
|
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
|
|
|
.slidingWindowSize(10)
|
|
@@ -55,6 +48,7 @@ CircuitBreakerConfig.ofDefaults();
|
|
|
.slowCallDurationThreshold(Duration.ofSeconds(60))
|
|
|
.slowCallRateThreshold(0.1f)
|
|
|
.waitDurationInOpenState(Duration.ofMinutes(1)).build();
|
|
|
+
|
|
|
```
|
|
|
|
|
|
* _**slidingWindowType:**_ 滑动窗口类型。还记得上一篇我们介绍过 **Resilience4J可以在基于计数的滑动窗口和基于时间的滑动窗口之间进行选择。**
|
|
@@ -77,6 +71,7 @@ CircuitBreakerConfig.ofDefaults();
|
|
|
上面说了那么多的配置 那么这些配置到底是怎么使用的。我们通过一个demo先展示一下。
|
|
|
|
|
|
```java
|
|
|
+
|
|
|
given(helloWorldService.returnHelloWorld()).willReturn("hello word");
|
|
|
|
|
|
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
|
|
@@ -89,6 +84,7 @@ CircuitBreakerConfig.ofDefaults();
|
|
|
CircuitBreaker circuitBreaker = CircuitBreaker.of("test", circuitBreakerConfig);
|
|
|
Supplier<String> stringSupplier = circuitBreaker.decorateSupplier(helloWorldService::returnHelloWorld);
|
|
|
assertThat(stringSupplier.get()).isEqualTo("hello word");
|
|
|
+
|
|
|
```
|
|
|
|
|
|
# 结语
|