跳到主要内容
版本:5.0.1

断路器属性配置

DeepSeek V3 中英对照 Circuit Breaker Properties Configuration

你可以在应用程序的配置属性文件中配置 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

Configs Properties Configuration​

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 Configuration。

禁用 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。