六、微服务容错处理之Feign使用Hystrix


Spring Cloud默认已经为Feign整合了Hystrix,要想打开Hystrix支持。

Feign使用Hystrix

  1. 配置文件添加:
feign:
  hystrix:
    enabled: true
  1. 编写Feign接口:
@FeignClient(name = "microservice-provider-user", fallback = FeignClientFallback.class)
public interface UserFeignClient {

    @GetMapping(value = "/{id}")
    public User findById(@PathVariable("id") Long id);
}

@Component
class FeignClientFallback implements UserFeignClient {

    @Override
    public User findById(Long id) {
        User user = new User();
        user.setId(-1L);
        user.setUsername("默认用户");
        return user;
    }
}
  1. 启动服务,当停止服务消费者,就会进入回退方法。

执行回退逻辑并不代表断路器已经打开。请求失败、超时、被拒绝以及断路器打开时都会执行回退逻辑。

Feign禁用Hystrix

  • 为指定Feign客户端禁用Hystrix:
@Configuration
public class FooConfiguration {
    @Bean
    @Scope("prototype")
    public Feign.Builder feignBuilder() {
        return Feign.builder();
    }
}

想要禁用 Hystrix 的@FeignClient 引用该配置类即可:

@FeignClient(name = "user", configuration = FooConfiguration.class)
public interface UserFeignClient {
    //...
}
  • 全局禁用Hystrix
feign:
  hystrix:
    enabled: false

该文章摘自《Spring Cloud 与 Docker 微服务架构实战(第二版)》

以上


文章作者: Qliang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Qliang !
评论
 上一篇
五、微服务容错处理之Hystrix线程隔离策略与传播上下文 五、微服务容错处理之Hystrix线程隔离策略与传播上下文
Hystrix的隔离策略有两种: 线程隔离 信号量隔离 THREAD(线程隔离):使用该方式,HystrixCommand将会在单独的线程上执行,并发请求受线程池中线程数量的限制。Hystrix中默认并且推荐使用线程隔离。 SEMAPHO
2019-01-23
下一篇 
四、微服务容错处理之Hystrix 四、微服务容错处理之Hystrix
实现容错的手段雪崩效应我们常把”基础服务故障”导致”级联故障”的现象称为雪崩效应。雪崩效应描述的是提供者不可用导致消费者不可用,并将不可用逐渐放大的过程。 如图所示,A 作为服务提供者(基础服务),B 为 A 的服务消费者,C 和 D 是
2019-01-23
  目录