Java 弹簧断路器-弹性4J-如何配置?
我有一个关于带Resilience4J(不仅仅是Resilience4J)的Spring Cloud断路器的快速问题 这两个项目都非常棒。然而,目前,我们在撤退中结束得太频繁了。这意味着,当第三方服务实际上很好时,我们仍然会使用后备服务 这可能是我自己的问题,因此,我想问一个特定配置的问题 我想告诉当前配置执行以下操作: 断路器坏了。(我将使用好、坏和半好/半坏状态Java 弹簧断路器-弹性4J-如何配置?,java,spring-cloud,circuit-breaker,resilience4j,Java,Spring Cloud,Circuit Breaker,Resilience4j,我有一个关于带Resilience4J(不仅仅是Resilience4J)的Spring Cloud断路器的快速问题 这两个项目都非常棒。然而,目前,我们在撤退中结束得太频繁了。这意味着,当第三方服务实际上很好时,我们仍然会使用后备服务 这可能是我自己的问题,因此,我想问一个特定配置的问题 我想告诉当前配置执行以下操作: 断路器坏了。(我将使用好、坏和半好/半坏状态 状态良好时:在一个可配置的数字(以5为例)失败的请求(第三方API出现错误)之后,将其设置为半好/半坏 当状态为一半好/一半坏
- 状态良好时:在一个可配置的数字(以5为例)失败的请求(第三方API出现错误)之后,将其设置为半好/半坏
- 当状态为一半好/一半坏:一半好/一半坏,若超过一半(可配置)的请求成功,则将if恢复到良好状态
- 当状态为半好/半坏时:如果超过一半的请求仍然失败,则将其置于坏状态
- 状态不好时:在两个连续的良好请求之后,将其恢复到一半好一半坏
- 对于超时,请求应在4秒内响应。这是第三方提供给我们的SLA。除此之外,可能有问题
- 对于每个失败的请求,重试3次(可配置)
resilience4j-spring-boot2
和resilience4j-reactor
,您可以轻松实现这一点
publisher
.transform(TimeLimiterOperator.of(timeLimiter))
.transform(CircuitBreakerOperator.of(circuitBreaker))
.transform(RetryOperator.of(retry))
我们的Spring Boot starter允许您在外部配置文件中配置TimeLimiter、断路器和重试。您甚至可以在方法上使用注释。无需手动添加反应器操作符
@TimeLimiter(name = "id")
@CircuitBreaker(name = "id")
@Retry(name = "id")
public Flux<String> fluxSuccess() {
return Flux.just("Hello", "World");
}
@TimeLimiter(name=“id”)
@断路器(name=“id”)
@重试(name=“id”)
公共流量fluxSuccess(){
返回Flux.just(“你好”,“世界”);
}
我们的Spring Boot starter增加了指标;)
请看:我不太明白第一点。“当断路器断开时,它不允许任何呼叫。”然后,断路器将永远卡在断开状态,不再发出请求“否”?请参阅此文档:断路器将仅在断开状态下保持一段时间,然后自动过渡到半断开状态。