Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧断路器-弹性4J-如何配置?_Java_Spring Cloud_Circuit Breaker_Resilience4j - Fatal编程技术网

Java 弹簧断路器-弹性4J-如何配置?

Java 弹簧断路器-弹性4J-如何配置?,java,spring-cloud,circuit-breaker,resilience4j,Java,Spring Cloud,Circuit Breaker,Resilience4j,我有一个关于带Resilience4J(不仅仅是Resilience4J)的Spring Cloud断路器的快速问题 这两个项目都非常棒。然而,目前,我们在撤退中结束得太频繁了。这意味着,当第三方服务实际上很好时,我们仍然会使用后备服务 这可能是我自己的问题,因此,我想问一个特定配置的问题 我想告诉当前配置执行以下操作: 断路器坏了。(我将使用好、坏和半好/半坏状态 状态良好时:在一个可配置的数字(以5为例)失败的请求(第三方API出现错误)之后,将其设置为半好/半坏 当状态为一半好/一半坏

我有一个关于带Resilience4J(不仅仅是Resilience4J)的Spring Cloud断路器的快速问题

这两个项目都非常棒。然而,目前,我们在撤退中结束得太频繁了。这意味着,当第三方服务实际上很好时,我们仍然会使用后备服务

这可能是我自己的问题,因此,我想问一个特定配置的问题

我想告诉当前配置执行以下操作: 断路器坏了。(我将使用好、坏和半好/半坏状态

  • 状态良好时:在一个可配置的数字(以5为例)失败的请求(第三方API出现错误)之后,将其设置为半好/半坏

  • 当状态为一半好/一半坏:一半好/一半坏,若超过一半(可配置)的请求成功,则将if恢复到良好状态

  • 当状态为半好/半坏时:如果超过一半的请求仍然失败,则将其置于坏状态

  • 状态不好时:在两个连续的良好请求之后,将其恢复到一半好一半坏

  • 对于超时,请求应在4秒内响应。这是第三方提供给我们的SLA。除此之外,可能有问题

  • 对于每个失败的请求,重试3次(可配置)

请问如何在春季Webflux中实现这一点

谢谢

这是不可能的:

状态不好时:在两个连续的良好请求之后,将其恢复到一半好一半坏

断路器断开时,不允许任何呼叫

如果使用
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增加了指标;)


请看:

我不太明白第一点。“当断路器断开时,它不允许任何呼叫。”然后,断路器将永远卡在断开状态,不再发出请求“否”?请参阅此文档:断路器将仅在断开状态下保持一段时间,然后自动过渡到半断开状态。