跟我学Spring Cloud(Finchley版)-14-Feign使用Hystrix

牧云@^-^@ 提交于 2019-11-27 12:54:34

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

服务降级

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

    feign:   hystrix:     enabled: true 
  • 提供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(); 	} } 

配套代码

服务降级:

获得造成fallback的原因:

本文首发

http://www.itmuch.com/spring-cloud/finchley-14/

干货分享

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!