断路器特性配置
你可以配置断路器和时间限制器配置或实例,出现在你的应用配置属性文件里。
属性配置的优先级高于 Java定制器配置。
优先级从上到下递减。
-
Method(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”)将申请实例后端A属性 -
ReactiveResilience4JCircuitBreakerFactory.create(“backendA”, “groupA”)或Resilience4JCircuitBreakerFactory.create(“backendA”, “groupA”)将申请实例后端A属性 -
ReactiveResilience4JCircuitBreakerFactory.create(“backendC”)或Resilience4JCircuitBreakerFactory.create(“backendC”)将申请全局默认属性 -
ReactiveResilience4JCircuitBreakerFactory.create(“backendC”, “groupC”)或Resilience4JCircuitBreakerFactory.create(“backendC”, “groupC”)将申请global default CircuitBreaker properties and config groupC TimeLimiter properties
有关 Resilience4j 属性配置的更多信息,请参见 Resilience4J Spring Boot 2 配置。
禁用时间限制器
默认情况下,时间限制器启用了,并且每次执行都有时间限制。该时间限制要么被明确定义,要么是默认时间限制(由io.github.resilience4j.timelimiter.TimeLimiterConfig#ofDefaults)被使用。
这时间限制器可以通过设置属性来全局禁用spring.cloud.circuitbreaker.resilience4j.disable-time-limiter自true.
spring:
cloud:
circuitbreaker:
resilience4j:
disable-time-limiter: true
时间限制器也可以在特定组或实例中禁用,使用spring.cloud.circuitbreaker.resilience4j.disable-time-limiter-map如下:
spring:
cloud:
circuitbreaker:
resilience4j:
disable-time-limiter-map:
group1: true
instanceA: false
instanceB: true
这些禁用选项时间限制在春季-云断路器并适用于基础和无功断路器的实现。
禁用的优先顺序为:实例 > 群 > 全球.基于上述配置,实例B和第一组有时间限制器但被禁用实例A已启用。对于所有其他实例和组,它将回退到全局设置的值spring.cloud.circuitbreaker.resilience4j.disable-time-limiter如果spring.cloud.circuitbreaker.resilience4j.disable-time-limiter默认情况下,未被设置,时间限制为剩余的断路器实例和组启用。