断路器属性配置
你可以在应用程序的配置属性文件中配置 CircuitBreaker 和 TimeLimiter 的配置或实例。属性配置的优先级高于 Java Customizer 配置。
优先级从上到下依次递减。
- 
方法(id)配置 - 针对特定方法或操作
 - 
服务(组)配置 - 针对特定应用程序服务或操作
 - 
全局默认配置
 
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 提供)。
可以通过将属性 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter 设置为 true 来全局禁用 TimeLimiter。
spring:
	cloud:
		circuitbreaker:
			resilience4j:
				disable-time-limiter: true
TimeLimiter 也可以通过 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter-map 为特定的组或实例禁用,如下所示:
spring:
	cloud:
		circuitbreaker:
			resilience4j:
				disable-time-limiter-map:
					group1: true
					instanceA: false
					instanceB: true
这些用于禁用 TimeLimit 的选项在 spring-cloud-circuitbreaker 中提供,并且适用于基本和反应式的断路器实现。
禁用的优先级顺序是:instance > group > global。根据上述配置,instanceB 和 group1 禁用了 TimeLimiter,但 instanceA 启用了它。对于所有其他实例和组,它将回退到全局设置的 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter 值。如果未设置 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter,默认情况下,剩余的断路器实例和组将启用 TimeLimit。