Spring Cloud 断路器
发布于 3 年前 作者 gwei 2795 次浏览 来自 分享

原标题: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

未完待续……

回到顶部