欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

hystrix 全局熔断_跟我学Spring Cloud(Finchley版)14Feign使用Hystrix

发布时间:2025/3/8 javascript 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 hystrix 全局熔断_跟我学Spring Cloud(Finchley版)14Feign使用Hystrix 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Feign默认已经整合了Hystrix,本节详细探讨Feign使用Hystrix的具体细节。

服务降级

1 加配置,默认Feign是不启用Hystrix的,需要添加如下配置启用Hystrix,这样所有的Feign Client都会受到Hystrix保护!

feign:

 hystrix:

   enabled: true

2 提供Fallback:

@FeignClient(name = "microservice-provider-user", fallback = UserFeignClientFallback.class)

public interface UserFeignClient {

 @GetMapping("/users/{id}")

 User findById(@PathVariable("id") Long id);

}

@Component

class UserFeignClientFallback implements UserFeignClient {

 @Override

 public User findById(Long id) {

   return new User(id, "默认用户", "默认用户", 0, new BigDecimal(1));

 }

}

获得造成fallback的原因

@FeignClient(name = "microservice-provider-user", fallbackFactory = UserFeignClientFallbackFactory.class)

public interface UserFeignClient {

 @GetMapping("/users/{id}")

 User findById(@PathVariable("id") Long id);

}

@Component

@Slf4j

class UserFeignClientFallbackFactory implements FallbackFactory<UserFeignClient> {

 @Override

 public UserFeignClient create(Throwable throwable) {

   return new UserFeignClient() {

     @Override

     public User findById(Long id) {

       log.error("进入回退逻辑", throwable);

       return new User(id, "默认用户", "默认用户", 0, new BigDecimal(1));

     }

   };

 }

}

Feign启用/禁用Hystrix

全局启用

feign.hystrix.enabled: true

全局禁用

feign.hystrix.enabled: false

或直接省略不写。

局部启用

利用Feign配置的自定义,为指定Feign Client指定如下配置类即可,Feign配置自定义详见:跟我学Spring Cloud(Finchley版)-10-Feign深入

public class FeignDisableHystrixConfiguration {

   @Bean

   @Scope("prototype")

   public HystrixFeign.Builder feignBuilder() {

       return HystrixFeign.builder();

   }

}

局部禁用

public class FeignDisableHystrixConfiguration {

   @Bean

   @Scope("prototype")

   public Feign.Builder feignBuilder() {

       return Feign.builder();

   }

}

配套代码

服务降级:

1 GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-feign-hystrix

2 Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-feign-hystrix

获得造成fallback的原因:

1 GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-feign-hystrix-fallback-factory

2 Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-feign-hystrix-fallback-factory

相关热文

  • 实用技巧:Hystrix传播ThreadLocal对象(两种方案)

  • 生产技巧:Feign如何控制Hystrix的启停、超时、熔断?

  • Hystrix停止开发,我们该何去何从?

  • Spring Cloud 源码学习之 Hystrix 熔断器

  • Spring Cloud Edgware新特性之二:如何配置Zuul的Hystrix线程池

  • 跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

  • 跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

您的关注是对我最大的支持!

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是生活随笔为你收集整理的hystrix 全局熔断_跟我学Spring Cloud(Finchley版)14Feign使用Hystrix的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。