在运行时更改 Spring Cloud Circuit Breaker 的超时?
Change timeout for Spring Cloud Circuit Breaker at runtime?
我正在使用 Spring Cloud Circuit Breaker 2.0.0(resilience4j 实现)在我的应用程序中进行熔断和超时。我创建了以下配置:
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer() {
return factory ->
factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(10)).build())
.circuitBreakerConfig(..)
.build());
}
现在我想编写一个集成测试来验证我的行为在发生超时时是否正确。为此,我想暂时将上面配置中指定的超时持续时间更改为 1 毫秒而不是 10 秒。
所以我的问题是:当我编写 Spring 引导集成测试时,如何更改 TimeLimiterConfig
(临时)的超时值?
您可以使用 @Value
Spring annotation 从资源文件夹 src/main/resources/common.properties
.
中检索配置文件中的值
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer(
@Value("${duration.milli:600}") int durationMilli) {
return factory ->
factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofMilli(durationMilli)).build())
.circuitBreakerConfig(..)
.build());
}
然后你设置值在src/main/resources/common.properties
duration.milli=600
当您进行测试时,您可以在 test
文件夹 src/test/resources/common.properties
中配置另一个具有不同值的资源文件。
duration.milli=1
我正在使用 Spring Cloud Circuit Breaker 2.0.0(resilience4j 实现)在我的应用程序中进行熔断和超时。我创建了以下配置:
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer() {
return factory ->
factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(10)).build())
.circuitBreakerConfig(..)
.build());
}
现在我想编写一个集成测试来验证我的行为在发生超时时是否正确。为此,我想暂时将上面配置中指定的超时持续时间更改为 1 毫秒而不是 10 秒。
所以我的问题是:当我编写 Spring 引导集成测试时,如何更改 TimeLimiterConfig
(临时)的超时值?
您可以使用 @Value
Spring annotation 从资源文件夹 src/main/resources/common.properties
.
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> defaultCustomizer(
@Value("${duration.milli:600}") int durationMilli) {
return factory ->
factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofMilli(durationMilli)).build())
.circuitBreakerConfig(..)
.build());
}
然后你设置值在src/main/resources/common.properties
duration.milli=600
当您进行测试时,您可以在 test
文件夹 src/test/resources/common.properties
中配置另一个具有不同值的资源文件。
duration.milli=1