サーキットブレーカープロパティの構成
アプリケーションの構成プロパティファイルで、CircuitBreaker
および TimeLimiter
構成またはインスタンスを構成できます。プロパティ構成は、Java Customizer
構成よりも優先度が高くなります。
優先順位は上から順。
Method(id) config - 特定のメソッドまたは操作について
サービス (グループ) 構成 - 特定のアプリケーションサービスまたは操作について
グローバルデフォルト設定
ReactiveResilience4JCircuitBreakerFactory.create(String id, String groupName)
Resilience4JCircuitBreakerFactory.create(String id, String groupName)
グローバルデフォルトプロパティの設定
resilience4j.circuitbreaker:
configs:
default:
registerHealthIndicator: true
slidingWindowSize: 50
resilience4j.timelimiter:
configs:
default:
timeoutDuration: 5s
cancelRunningFuture: true
構成プロパティの構成
resilience4j.circuitbreaker:
configs:
groupA:
registerHealthIndicator: true
slidingWindowSize: 200
resilience4j.timelimiter:
configs:
groupC:
timeoutDuration: 3s
cancelRunningFuture: true
インスタンスプロパティの構成
resilience4j.circuitbreaker:
instances:
backendA:
registerHealthIndicator: true
slidingWindowSize: 100
backendB:
registerHealthIndicator: true
slidingWindowSize: 10
permittedNumberOfCallsInHalfOpenState: 3
slidingWindowType: TIME_BASED
recordFailurePredicate: io.github.robwin.exception.RecordFailurePredicate
resilience4j.timelimiter:
instances:
backendA:
timeoutDuration: 2s
cancelRunningFuture: true
backendB:
timeoutDuration: 1s
cancelRunningFuture: false
ReactiveResilience4JCircuitBreakerFactory.create("backendA")
またはResilience4JCircuitBreakerFactory.create("backendA")
はinstances backendA properties
を適用しますReactiveResilience4JCircuitBreakerFactory.create("backendA", "groupA")
またはResilience4JCircuitBreakerFactory.create("backendA", "groupA")
はinstances backendA properties
を適用しますReactiveResilience4JCircuitBreakerFactory.create("backendC")
またはResilience4JCircuitBreakerFactory.create("backendC")
はglobal default properties
を適用しますReactiveResilience4JCircuitBreakerFactory.create("backendC", "groupC")
またはResilience4JCircuitBreakerFactory.create("backendC", "groupC")
はglobal default CircuitBreaker properties and config groupC TimeLimiter properties
を適用します
Resilience4j プロパティ構成の詳細については、Resilience4J Spring Boot 2 の構成 (英語) を参照してください。
TimeLimiter の無効化
デフォルトでは、TimeLimiter
は有効になっており、すべての実行には時間制限が設けられています。この時間制限は明示的に定義されるか、デフォルトの時間制限 ( io.github.resilience4j.timelimiter.TimeLimiterConfig#ofDefaults
によって提供される) が使用されます。
TimeLimiter
は、プロパティ spring.cloud.circuitbreaker.resilience4j.disable-time-limiter
を true
に設定することでグローバルに無効にすることができます。
spring:
cloud:
circuitbreaker:
resilience4j:
disable-time-limiter: true
この型のオプションは、spring-cloud-circuitbreaker
内のグローバルスコープでのみ提供され、基本およびリアクティブサーキットブレーカーの実装に適用されます。