dubbo服务降级
dubbo服务降级:消费方对该服务的方法调用都直接返回null值,不发起远程调用,用来屏蔽不重要服务不可用时对调用方的影响
简单粗暴级别
在消费者一方的dubbo配置文件中加入:
<dubbo:method name="hello" timeout="3000" mock="return null"/>
自定义级别
新增类:接口+Mock,放置在项目的api模块,和接口同个包下,如:接口IUserService在com.*.user.api
,则新增IUserServiceMock
也在这个package下面:
服务提供者:
//服务提供者api
public interface IUserService {
String hello();
}
//服务提供者api实现
@Service("iUserService")
public class IUserServiceImpl implements IUserService {
@Override
public String hello() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "hello";
}
}
服务降级自定义类IUserServiceMock
:
public class IUserServiceMock implements IUserService {
@Override
public String hello() {
System.out.println("服务降级啦!!");
return null;
}
}
spring-dubbo.xml
配置:
<dubbo:service interface="com.*.user.api.IUserService"
ref="iUserService"/>
服务消费者,注意要实现服务降级,需要加入mock=true
:
<dubbo:reference interface="com.*.user.api.IUserService"
id="iUserService">
<dubbo:method name="hello" timeout="3000" mock="true"/>
</dubbo:reference>
当客户端调用3秒后超时,如不意外,控制台可以看见:
服务降级啦!!