Hystrix服务降级实现
1. 因为Feign中集成了hystrix,所以不用添加以下依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
2. 自定义一个FallbackFactory类,实现FallbackFactory接口,在FallbackFactory接口上加上你的Service泛型
@Component //这个地方一定要记得加注解
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {
@Override
public DeptClientService create(Throwable throwable) {
return new DeptClientService() {
@Override
public JsonData add(String name) {
return getJsonData();
}
@Override
public JsonData get(Long deptId) {
return getJsonData();
}
@Override
public JsonData list() {
return getJsonData();
}
private JsonData<Object> getJsonData() {
JsonData<Object> objectJsonData = new JsonData<>();
objectJsonData.setCode(400);
objectJsonData.setMsg("服务降级,当前服务已关闭");
objectJsonData.setTimestamp(new Date().getTime());
objectJsonData.setData(null);
return objectJsonData;
}
};
}
}
3. 在@FeignClient注解中注明你自定义的fallbackFactory类
@FeignClient(value = "providerName", fallbackFactory = DeptClientServiceFallbackFactory.class)
4. application.yml中添加配置
feign:
hystrix:
enabled: true
做了这些以后,就算我们的provider已经down了,但是我们做了服务降级处理,让客户端在服务不可用时也会得到可处理的提示信息,而不会挂起,甚至于耗死服务器。