Spring Cloud 断路器

_原题是:Spring认证|Spring Cloud官方介绍
Spring Cloud 提供了多种不同的功能,允许您在自己的应用程序中使用一致性的 API,开发人员选择最适合您的应用程序需求的功能。
支持的实现
Netfix Hystrix
弹性4J
哨兵
春季重试
核心概念
要在您的代码中创建生产,您可以使用CircuitBreakerFactoryAPI。当您在类路径中包含Spring Cloud Circuit Breaker starter 时,将自动为您创建一个实现此API 的bean。给个使用此API 的非常简单的例子
@服务
公共静态类 DemoControllerService {
私人休息模板休息;
私人断路器工厂 cbFactory;
公共 DemoControllerService(RestTemplate 休息,CircuitBreakerFactory cbFactory){
this.rest = 休息;
this.cbFactory = cbFactory;
}
公共字符串慢(){
return cbFactory.create("slow").run(() -> rest.getForObject("/slow", String.class), throwable -> "fallback");
}
}
该CircuitBreakerFactory.createAPI将创建一个命名类的一个实例CircuitBreaker。该运行方法采用一个供应商和一个功能。这就是您要包装在供应时中的代码。Function是法院跳闸这将执行的回退。将传递Throwable导致回退被触发的函数。如果您不想提供后备,您可以选择退出后备。
反应式代码中的
如果 Project Reactor 在类路径上,那么您也可以使用 ReactiveCircuitBreakerFactory 用于响应式代码。
@服务
公共静态类 DemoControllerService {
私有 ReactiveCircuitBreakerFactory cbFactory;
私有 WebClient webClient;
公共演示控制器服务(WebClient webClient,ReactiveCircuitBreakerFactory cbFactory){
this.webClient = webClient;
this.cbFactory = cbFactory;
}
公共单声道慢(){
return webClient.get().uri("/slow").retrieve().bodyToMono(String.class).transform(
it -> cbFactory.create("slow").run(it, throwable -> return Mono.just("fallback")));
}
}
该ReactiveCircuitBreakerFactory.createAPI 将创建一个命名类的一个实例ReactiveCircuitBreaker。该方法应该采用MonoorFlux 使其包装在国外中。您可以选择配置一个回退功能,如果回跳闸通过Throwable导致失败退,则该回退将被调用。
Spring启动配置
Spring Cloud BOM 提供以下启动器
Hystrix - org.springframework.cloud:spring-cloud-starter-netflix-hystrix
弹性4J - org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j
反应性弹性4J - org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j
春季重试—— org.springframework.cloud:spring-cloud-starter-circuitbreaker-spring-retry
哨兵—— org.springframework.cloud:spring-cloud-starter-circuitbreaker-sentinal
【Spring Cloud 断路器】未完待续……

    推荐阅读