Spring Cloud
默认已经为Feign
整合了Hystrix
,要想打开Hystrix
支持。
Feign
使用Hystrix
- 配置文件添加:
feign:
hystrix:
enabled: true
- 编写
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;
}
}
- 启动服务,当停止服务消费者,就会进入回退方法。
执行回退逻辑并不代表断路器已经打开。请求失败、超时、被拒绝以及断路器打开时都会执行回退逻辑。
为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