dubbo 客户端动态设置version dubbo的mock设置_dubbo

解决方法:

dubbo提供了mock配置,可以很好的实现dubbo服务降级,
mock主要有两种配置方式,

第1种

在远程调用异常时,服务端直接返回一个固定的字符串(也就是写死的字符串)
具体配置:
在服务调用方配置mock参数:
<dubbo:reference id=“xxxService” interface=“com.x…service.xxxxService” check=“false” mock=“return 123456…” />

说明:配置了mock参数之后,假设在调用服务的时候,远程服务没有启动,或者各种网络异常了,那远程服务会把这个mock配置的值返回,也就是会返回123456…
通过这种方式就可以避免了因为服务调用不了而出现异常错误而带来的程序不可用(起码是有值返回的,然后可以根据值进行业务逻辑处理判断等等)。
注:除了配置mock参数之外,其它地方不用变。

第2种

在远程调用异常时,服务端根据自定义mock业务处理类进行返回)
具体配置:
在服务调用方配置mock参数:
<dubbo:reference id=“xxxService” interface=“com.x…service.xxxxService” check=“false” mock=“true” />

说明:配置了mock参数之后,假设在调用服务的时候,远程服务没有启动,或者各种网络异常了,那远程服务会去寻找自定义的mock业务处理类进行业务处理。
因此还需配置一个自定义mock业务处理类
在接口服务xxxxService的目录下创建相应的mock业务处理类,同时实现业务接口xxxxService(),接口名要注意命名规范:接口名+Mock后缀,mock实现需要保证有无参的构造方法。

public class xxxxServiceMock implements xxxxService {
 @Override
 public String getXXXX(int id) {
 return “this is exception 自定义…”;
 }
 }


配置完成后,此时如果调用失败会调用自定义的Mock业务实现。
注:除了以上两处之外,其它地方不用变。

管理界面手动配置:

以上的配置其实除了在代码中配置之外,还可以在dubb-adming管理界面直接手动配置:

分别是屏蔽和容错:

dubbo 客户端动态设置version dubbo的mock设置_服务降级_02

dubbo 客户端动态设置version dubbo的mock设置_远程服务_03

屏蔽:force.mock (即:屏蔽请求,直接返回某个值,如上面的字符串,mock=“return 123456…”);

容错:fail.mock (即:允许请求,在请求失败的时候,再返回某个值,如:mock=“fail:return 123456…”);