spring - 在运行时更改 Spring Cloud Circuit Breaker 的超时?
问题描述
我正在使用 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 秒。
TimeLimiterConfig
所以我的问题是:在编写 Spring Boot 集成测试时,如何更改(临时)超时值?
解决方案
您可以使用@Value
Spring 注释从资源文件夹中检索配置文件中的值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
推荐阅读
- javascript - Codeigniter 欢迎页面 JavaScript 通知程序
- javascript - 使用多维数组的登录页面?
- java - 如何通过标签名称检索多个标签中的元素以进行硒自动化测试
- localization - 使用清单的 MS Teams 应用本地化不起作用
- r - 将顶点属性数据从 igraph 移动到矩阵
- c# - 是否可以为代码重复创建方法?
- azure - 如何通过验证源和目标中文件的大小来归档 Azure 数据湖中的数据
- linux - 如果我们允许 root 用户特权在一个 pod 中进行进程,co pod 是否有任何风险?
- sql - 如何调试此查询
- javascript - 使用 NODE.js 在 MySQL 数据库中查找电子邮件