整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。服务降级处理是在客户端实现完成的,与服务端没有关系。
1、修改公共工程microservicecloud-api
(1)、在注解@FeignClient中添加fallbackFactory属性值
//fallbackFactory用来指定处理服务降级的类
@FeignClient(value = "MICROSERVICECLOUD-DEPT",fallbackFactory = DeptClientServiceFallbackFactory.class)
public interface DeptClientService {
}
(2)、新建FallbackFactory接口的实现类DeptClientServiceFallbackFactory
//Hystrix服务降级
@Component
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {
@Override
public DeptClientService create(Throwable throwable) {
return new DeptClientService() {
@Override
public Dept get(long id) {
return new Dept().setDeptno(id).setDname("该ID:" + id + "没有对应的信息,Consumer客户端提供的降级信息,此刻服务Provider已经关闭")
.setDb_source("no this database in MySQL");
}
@Override
public List<Dept> list() {
return null;
}
@Override
public boolean add(Dept dept) {
return false;
}
};
}
}
2、修改feign工程的yml配置
feign:
hystrix:
enabled: true
3、先启动3个eureka集群后,启动部门提供者8001工程,再启动feign工程。
http://localhost:9002/consumer/dept/get/1

关闭部门提供者8001工程。http://localhost:9002/consumer/dept/get/2

此时服务端provider已经down了,但是我们做了服务降级处理,让客户端在服务端不可用时也会获得提示信息而不会挂起耗死服务器。
服务降级处理实现与测试
因整体资源不足,需进行服务降级处理。该处理在客户端实现,与服务端无关。介绍了修改公共工程microservicecloud-api、feign工程的yml配置的步骤,还说明了启动eureka集群、部门提供者工程和feign工程的顺序,并进行测试,确保服务端不可用时客户端能获提示。
668

被折叠的 条评论
为什么被折叠?



