前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud 断路器

Spring Cloud 断路器

原创
作者头像
IT胶囊
修改2021-09-09 17:54:48
6440
修改2021-09-09 17:54:48
举报
文章被收录于专栏:IT技能应用

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

未完待续……

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 支持的实现
  • 核心概念
  • Spring启动配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档