【发布时间】:2021-10-31 19:12:35
【问题描述】:
我关注 https://resilience4j.readme.io/docs/getting-started-3 获取 Resilience4J 文档。
我有一个问题,当主后端不可用时,我的断路器立即连接到回退(在第一次调用时)。
@Bean
public CircuitBreakerConfig circuitBreakerConfig() {
return CircuitBreakerConfig.custom()
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
.slidingWindowSize(5)
.minimumNumberOfCalls(5)
.failureRateThreshold(4)
.build();
}
我也尝试将配置移动到 application.yml,但仍然是相同的行为。
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
@CircuitBreaker(name = "backendA", fallbackMethod = "fallbackA")
public String backendA() {
return restTemplate.getForObject("http://localhost:9999/backendA", String.class);
}
public String fallbackA(Exception e) {
return restTemplate.getForObject("http://localhost:8080/partner", String.class);
}
有人可以帮忙吗?
//更新
更多详情如下。 如上面的代码所示,我的应用正在调用 /backendA,位于断路器后面。预计根据配置,如果 backendA 不可用,则应该失败 5 次,然后第 6 次调用将回退到 /partner API。或者换句话说,电路应该在 5 次调用后打开。
这就是我测试的方式。
我启动了应用程序。 backendA 和 fallbackA 都可用。几个电话后,我杀死了后端A。对 backendA 的下一次调用将回退到 /partner,而我预计对 backendA 的下一个 5 次调用将失败而没有后备。我的预期正确吗?
【问题讨论】:
-
您能否说明您的测试方式、您期望发生什么以及实际发生了什么?
-
@TimMoore 用您要求的详细信息更新了问题
标签: java circuit-breaker resilience4j