Spring Cloud Circuit Breaker Resilience4jと直接のResilience4j Spring Boot統合の違いについて詳しく説明します。
spring-cloud-starter-circuitbreaker-resilience4j
resilience4j-spring-boot3
Spring Cloud版の設定例:
spring:
cloud:
circuitbreaker:
resilience4j:
configs:
default:
failure-rate-threshold: 50
wait-duration-in-open-state: 10000
sliding-window-size: 10
直接Resilience4j版の設定例:
resilience4j:
circuitbreaker:
configs:
default:
failure-rate-threshold: 50
wait-duration-in-open-state: 10s
sliding-window-size: 10
instances:
myService:
base-config: default
Spring Cloud版:
@Component
public class MyService {
private final CircuitBreakerFactory circuitBreakerFactory;
public MyService(CircuitBreakerFactory circuitBreakerFactory) {
this.circuitBreakerFactory = circuitBreakerFactory;
}
public String callExternalService() {
CircuitBreaker circuitBreaker = circuitBreakerFactory.create("myService");
return circuitBreaker.run(() -> {
// 外部サービス呼び出し
return "Success";
}, throwable -> "Fallback");
}
}
直接Resilience4j版:
@Component
public class MyService {
@CircuitBreaker(name = "myService", fallbackMethod = "fallback")
public String callExternalService() {
// 外部サービス呼び出し
return "Success";
}
public String fallback(Exception ex) {
return "Fallback";
}
}
Spring Cloud版:
直接Resilience4j版:
サーキットブレーカー以外の機能も利用可能
Spring Cloud版:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
直接Resilience4j版:
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot3</artifactId>
</dependency>
Spring Cloud版:
直接Resilience4j版:
どちらも優秀なライブラリですが、プロジェクトの要件とアーキテクチャに応じて適切な選択をすることが重要です。