实际开发或者测试过程中,因为服务端的不稳定,希望能在客户端实现挡板功能。下面介绍如何利用
dubbo:reference的stub属性来实现挡板功能。
首先,看下dubbo官网对stub的描述:
stub:服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)
也就是说,利用stub,我们可以实现远程服务的代理。
下面,我们看下具体如何实现:
1.创建本地代理类,实现远程服务接口,这里要注意构造函数
public class LocalTxnCpstsService implements TxnCpstsService{
private TxnCpstsService service;
public LocalTxnCpstsService(){
}
public LocalTxnCpstsService(TxnCpstsService service){
this.service = service;
}
@Override
public SoaSignRes sign(SoaSignReq soaReq) {
// 本地实现
// return
}
}
2.dubbo:reference配置
<dubbo:reference interface="com.fuiou.cpsts.soa.services.TxnCpstsService" retries="0" id="txnCpstsService" timeout="60000" check="false" stub="com.fuiou.cps.service.LocalTxnCpstsService"/>