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

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

Feign使用Hystrix

  1. 配置文件添加:
1
2
3
feign:
hystrix:
enabled: true
  1. 编写Feign接口:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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:
1
2
3
4
5
6
7
8
@Configuration
public class FooConfiguration {
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder();
}
}

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

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

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

以上

LeoQin wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
0%