Feign–本身就集成了Hystrix
1.开启Hystrix feign.hystrix.enabled = true
feign:
hystrix:
enabled: true
2.方法
@FeignClient( value = "user-server" , fallback = UserFeignClientFallback.class)
//fallback = UserFeignClientFallback.class 引入托底类
@Component
public interface UserFeignClient {
//调用根据id获取用户的接口
@GetMapping("/userserver/user/{id}")
User getUserById(@PathVariable("id")Long id);
}
1.实现本身
@Component//fallback方法类
public class UserFeignClientFallback implements UserFeignClient {
@Override
public User getUserById(Long id) {
System.out.println("1111111111111");
return null;
}
}
2.实现工厂—一般不用这种方式 这是官网的案例
@FeignClient(name = "hello", fallbackFactory = HystrixClientFallbackFactory.class)
protected interface HystrixClient {
@RequestMapping(method = RequestMethod.GET, value = "/hello")
Hello iFailSometimes();
}
@Component
static class HystrixClientFallbackFactory implements FallbackFactory<HystrixClient> {
@Override
public HystrixClient create(Throwable cause) {
return new HystrixClient() {
@Override
public Hello iFailSometimes() {
return new Hello("fallback; reason was: " + cause.getMessage());
}
};
}
}