feign 默认是支持hystrix的, 但是在Spring - cloud Dalston 版本之后就默认关闭了, 因为不一定业务需求要用的到,
所以现在要使用首先得打开他,在yml文件加上如下配置:
feign:
hystrix:
enabled: true
加上配置之后降级方法怎么写呢?
@FeignClient(value = "SERVER-POWER",fallback = PowerServiceFallBack.class)
public interface PowerServiceClient {
@RequestMapping("/power.do")
public Object power(@RequestParam("name") String name);
}
在feign客户端的注解上 有个属性叫fallback 然后指向一个类
PowerServiceFallBack 类:
@Component
public class PowerServiceFallBack implements PowerServiceClient {
@Override
public Object power(String name) {
return R.error("测试降级");
}
}
这样子,方法降级就写好了
当然 可能你有这种需求, 需要拿到具体的错误信息, 那么可以这样写:
@Component
public class PowerServiceClientFallBackFactory implements FallbackFactory<PowerServiceClient> {
@Override
public PowerServiceClient create(Throwable throwable) {
return new PowerServiceClient() {
@Override
public Object power(String name) {
String message = throwable.getMessage();
return R.error("feign降级");
}
};
}
}
客户端指定一个fallbackFactory就好了
@FeignClient(value = "SERVER-POWER",fallbackFactory = PowerServiceClientFallBackFactory.class)
public interface PowerServiceClient {
@RequestMapping("/power.do")
public Object power(@RequestParam("name") String name);
}
这个message 就是拿到的错误信息
至此, 就完成了feign与hystrix的整合