Skip to content

Commit 3929648

Browse files
author
YunaiV
committed
resilience4j + cloud 示例
1 parent 7a83a81 commit 3929648

File tree

2 files changed

+45
-7
lines changed

2 files changed

+45
-7
lines changed

labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/config/Resilience4jConfig.java

+44-6
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,55 @@
99
import org.springframework.context.annotation.Configuration;
1010

1111
import java.time.Duration;
12+
import java.util.function.Consumer;
13+
import java.util.function.Function;
1214

1315
@Configuration
1416
public class Resilience4jConfig {
1517

1618
@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+
};
2361
}
2462

2563
// @Bean

labx-24/labx-24-resilience4j-demo02/src/main/java/cn/iocoder/springcloud/labx24/resilience4jdemo/controller/DemoController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class DemoController {
2727

2828
@GetMapping("/get_user")
2929
public String getUser(@RequestParam("id") Integer id) {
30-
return circuitBreakerFactory.create("backendA").run(new Supplier<String>() {
30+
return circuitBreakerFactory.create("slow").run(new Supplier<String>() {
3131

3232
@Override
3333
public String get() {

0 commit comments

Comments
 (0)