您可以在应用程序的配置属性文件中配置和配置或实例。 属性配置的优先级高于 Java 配置。CircuitBreakerTimeLimiterCustomizer

优先级从上到下递减。

  • Method(id) 配置 - 关于特定方法或操作

  • Service(group) 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

默认情况下,启用 并且每次执行都受时间限制的支持。此时间限制是显式定义的,或者使用默认时间限制(由 提供)。TimeLimiterio.github.resilience4j.timelimiter.TimeLimiterConfig#ofDefaults

可以通过将属性设置为 来全局禁用 。TimeLimiterspring.cloud.circuitbreaker.resilience4j.disable-time-limitertrue

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

此类型的选项仅在全局范围内提供,并适用于 基本和无功断路器实现。spring-cloud-circuitbreaker