|
请使用 Spring-Cloud-CircuitBreaker 5.0.1 获取最新稳定版本! |
熔断器属性配置
您可以在应用程序的配置属性文件中配置 CircuitBreaker 和 TimeLimiter 的配置或实例。属性配置的优先级高于 Java Customizer 配置。
按从上到下的优先级递减。
-
Method(id) 配置 - 针对特定方法或操作
-
Service(group) 配置 - 针对特定应用程序服务或操作
-
全局默认配置
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 提供的默认时间限制。
属性 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 已被禁用,但 instanceA 处于启用状态。对于所有其他实例和组,将回退到全局设置的值 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter。如果 spring.cloud.circuitbreaker.resilience4j.disable-time-limiter 未设置,则默认情况下,剩余的熔断器实例和组的 TimeLimit 将处于启用状态。