サーキットブレーカープロパティの構成

アプリケーションの構成プロパティファイルで、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 内のグローバルスコープでのみ提供され、基本およびリアクティブサーキットブレーカーの実装に適用されます。