熔断器属性配置

您可以在应用程序的配置属性文件中配置 CircuitBreakerTimeLimiter 的配置或实例。属性配置的优先级高于 Java Customizer 配置。spring-doc.cadn.net.cn

按从上到下的优先级递减。spring-doc.cadn.net.cn

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 propertiesspring-doc.cadn.net.cn

  • ReactiveResilience4JCircuitBreakerFactory.create("backendA", "groupA")Resilience4JCircuitBreakerFactory.create("backendA", "groupA") 将应用 instances backendA propertiesspring-doc.cadn.net.cn

  • ReactiveResilience4JCircuitBreakerFactory.create("backendC")Resilience4JCircuitBreakerFactory.create("backendC") 将应用 global default propertiesspring-doc.cadn.net.cn

  • ReactiveResilience4JCircuitBreakerFactory.create("backendC", "groupC")Resilience4JCircuitBreakerFactory.create("backendC", "groupC") 将应用 global default CircuitBreaker properties and config groupC TimeLimiter propertiesspring-doc.cadn.net.cn

有关 Resilience4j 属性配置的更多信息,请参阅 Resilience4J Spring Boot 2 配置spring-doc.cadn.net.cn

禁用 TimeLimiter

默认情况下,TimeLimiter 是启用的,每次执行都受时间限制。该时间限制要么显式定义,要么使用由 io.github.resilience4j.timelimiter.TimeLimiterConfig#ofDefaults 提供的默认时间限制。spring-doc.cadn.net.cn

属性 TimeLimiter 可以通过将属性 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter 设置为 true 来全局禁用。spring-doc.cadn.net.cn

spring:
	cloud:
		circuitbreaker:
			resilience4j:
				disable-time-limiter: true

TimeLimiter 也可以通过以下方式针对特定组或实例禁用 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter-map
spring-doc.cadn.net.cn

spring:
	cloud:
		circuitbreaker:
			resilience4j:
				disable-time-limiter-map:
					group1: true
					instanceA: false
					instanceB: true

这些禁用 TimeLimit 的选项提供于 spring-cloud-circuitbreaker 内,适用于基本和响应式断路器实现。spring-doc.cadn.net.cn

禁用的优先级顺序为:instance > group > global。根据上述配置,instanceBgroup1TimeLimiter 已被禁用,但 instanceA 处于启用状态。对于所有其他实例和组,将回退到全局设置的值 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter。如果 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter 未设置,则默认情况下,剩余的熔断器实例和组的 TimeLimit 将处于启用状态。spring-doc.cadn.net.cn