服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
代码部分:
1.在springcloud-api项目的com.allen.springcloud.service包下面新建编写DeptClientServiceFallbackFactory。
package com.allen.springcloud.service; import com.allen.springcloud.pojo.Dept; import feign.hystrix.FallbackFactory; import org.springframework.stereotype.Component; import java.util.List; //降级 @Component public class DeptClientServiceFallbackFactory implements FallbackFactory { @Override public DeptClientService create(Throwable throwable) { return new DeptClientService() { @Override public Dept queryById(Long id) { return new Dept() .setDeptno(id) .setDname("id=>" + id + "没有对应的信息,客户端提供了降级的信息,这个服务现在已经被关闭") .setDb_source("没有数据"); } @Override public List<Dept> queryAll() { return null; } @Override public boolean addDept(Dept dept) { return false; } }; } }
2.修改DeptClientService接口的注解。
3.修改springcloud-consumer-dept-feign配置文件application.yml,开启服务降级。
#开启降级feign.hystrix feign: hystrix: enabled: true
4.依次启动服务,测试。
首先是开启8001端口的服务,进行接口测试,是可以正常拿到数据的。
这时候我们关闭8001服务,再次调用接口,服务已经被降级处理了。