断路器属性配置
您可以配置CircuitBreaker
和TimeLimiter
configs 或实例。
Property configuration 的优先级高于 JavaCustomizer
配置。
优先级从上到下降序。
-
Method(id) config - 针对特定方法或作
-
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
Configs 属性配置
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
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
disabled 但instanceA
已启用。对于所有其他实例和组,它将回退到全局设置的值spring.cloud.circuitbreaker.resilience4j.disable-time-limiter
如果spring.cloud.circuitbreaker.resilience4j.disable-time-limiter
未设置,则默认情况下,TimeLimit
为其余断路器实例和组启用。