`

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

 
阅读更多

说明:SpringCloud系列笔者自学系列,学习来源是周立的博客  http://www.itmuch.com/ 。而此处转载其博客只是为了方便自己以后的学习。

本篇来源 http://www.itmuch.com/spring-cloud/finchley-14/

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的原因:

相关文章

 

 

 

 

分享到:
评论

相关推荐

    spring-cloud-hystrix-feign(注册中心、member、feign-order).zip

    然后,"SpringCloud-2.0-order-hystrix-feign-8012"展示了如何使用Feign和Hystrix进行服务间调用。Feign是一个声明式Web服务客户端,使得编写Web服务客户端就像编写Java接口一样简单。在Order服务中,我们可以定义一...

    springcloud2-hystrix-feign-zuul.zip

    标题 "springcloud2-hystrix-feign-zuul.zip" 提示了我们这是一组关于Spring Cloud 2的实现,具体涉及Hystrix、Feign和Zuul组件的实践项目。Spring Cloud 是一个用于构建分布式系统的服务发现、配置管理和微服务连接...

    springcloud-ribbon-feign-hystrix-zuul-config

    在Spring Cloud框架中,"springcloud-ribbon-feign-hystrix-zuul-config"这个标题涉及到四个关键组件:Ribbon、Feign、Hystrix和Zuul,以及配置管理Config。这些组件都是构建分布式系统时常用的服务发现、客户端负载...

    spring-cloud-user-feign.zip

    在本项目"spring-cloud-user-feign.zip"中,我们探讨的是如何在Spring Cloud框架下实现服务间的调用,特别是利用Feign客户端进行微服务通信。这个压缩包包含了四个关键组件,分别是: 1. spring-cloud-gateways:这...

    spring-cloud-openfeign-core-3.1.1-API文档-中英对照版.zip

    包含翻译后的API文档:spring-cloud-openfeign-core-3.1.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework.cloud:spring-cloud-openfeign-core:3.1.1; 标签:cloud、spring、...

    spring-cloud-openfeign-core-3.1.1-API文档-中文版.zip

    包含翻译后的API文档:spring-cloud-openfeign-core-3.1.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.cloud:spring-cloud-openfeign-core:3.1.1; 标签:cloud、spring、openfeign、core...

    SpringCloud-2.0-order-Feign-8005.zip

    在本项目"SpringCloud-2.0-order-Feign-8005.zip"中,主要探讨了如何在Spring Cloud 2.0环境下利用Feign客户端实现服务间的调用,并达到与`@LoadBalanced`注解类似的效果,即负载均衡。Spring Cloud是基于Spring ...

    springcloud-app-parent是一个SpringCloud的练习实践项目

    【SpringCloud】springcloud-app-parent是一个SpringCloud的练习实践项目,集成了nacos,eureka, feign,springcloud-gateway,springcloud-config,rabbitmq,ka... (Springcloud app parent is a SpringCloud practice ...

    spring-cloud-openfeign-core-3.0.4-API文档-中文版.zip

    包含翻译后的API文档:spring-cloud-openfeign-core-3.0.4-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.cloud:spring-cloud-openfeign-core:3.0.4; 标签:springframework、cloud、spring...

    srping-cloud-alibaba-nacos-feign.zip

    《Spring Cloud Alibaba Nacos与Feign的整合应用详解》 在微服务架构中,服务间的通信是关键一环。Spring Cloud Alibaba提供了丰富的组件,其中包括Nacos作为服务注册与配置中心,以及Feign作为声明式服务调用工具...

    springcloud-eureka-feign-mybatis-seata.zip

    在"springcloud-eureka-feign-mybatis-seata"项目中,开发者可以学习如何整合这些技术来创建一个完整的分布式事务示例。通过Eureka,服务能够被发现和调用;借助Feign,跨服务调用变得简单;MyBatis负责与数据库交互...

    springcloud-learning-master.zip springcloud学习合集

    本压缩包"springcloud-learning-master.zip"是一个关于SpringCloud学习的资源合集,包含了一系列的例子和教程,适合想要深入理解和掌握SpringCloud技术的开发者。 首先,我们要了解SpringCloud的基础概念。Spring...

    spring cloud eureka zuul ribbon hystrix feign config 示例

    在给定的标题和描述中,我们看到了几个关键组件:Eureka、Zuul、Ribbon、Hystrix 和 Feign,这些都是Spring Cloud生态中的重要组成部分。下面将详细阐述这些组件及其在实际应用中的作用。 1. **Eureka**:它是...

    springcloud-learning-master.zip

    本压缩包“springcloud-learning-master.zip”提供了一套完整的SpringCloud学习资料,包括Eureka、Ribbon、Nacos、SpringCloud以及Feign等多个组件的实践教程。 1. **Eureka**:Eureka是Spring Cloud Netflix项目的...

    feign-form-spring-3.8.0-API文档-中文版.zip

    包含翻译后的API文档:feign-form-spring-3.8.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.github.openfeign.form:feign-form-spring:3.8.0; 标签:openfeign、spring、github、form、feign、jar包、java...

    springcloud-feign.zip

    springcloud整合openFeign,包括feign的基本使用、传参、指定特定的服务器、负载均衡等使用方法。 模块有: springcloud-feign-api springcloud-feign-consumer springcloud-feign-provider springcloud-feign-...

    spring-cloud-examples-master

    《Spring Cloud实战详解:基于spring-cloud-examples-master的深度解析》 在当今的软件开发领域,微服务架构已经成为主流趋势,而Spring Cloud作为Java生态中的微服务治理框架,深受开发者们的喜爱。本篇文章将深入...

    SpringCloud-Learning-master.zip

    《SpringCloud深度学习指南》 SpringCloud作为微服务架构中的热门框架,因其强大的服务治理功能和易用性,被广大开发者广泛采用。本资源“SpringCloud-Learning-master.zip”是程序猿DD关于SpringCloud的学习资料,...

Global site tag (gtag.js) - Google Analytics