本地假裝 [1] 一般用於服務降級,好比某驗權服務,當服務提供方所有掛掉後,客戶端不拋出異常,而是經過 Mock 數據返回受權失敗。html
在 spring 配置文件中按如下方式配置:spring
<dubbo:reference interface="com.foo.BarService" mock="true" />
或apache
<dubbo:reference interface="com.foo.BarService" mock="com.foo.BarServiceMock" />
在工程中提供 Mock 實現 [2]:網絡
package com.foo; public class BarServiceMock implements BarService { public String sayHello(String name) { // 你能夠僞造容錯數據,此方法只在出現RpcException時被執行 return "容錯數據"; } }
若是服務的消費方常常須要 try-catch 捕獲異常,如:函數
Offer offer = null; try { offer = offerService.findOffer(offerId); } catch (RpcException e) { logger.error(e); }
請考慮改成 Mock 實現,並在 Mock 實現中 return null。若是隻是想簡單的忽略異常,在 2.0.11
以上版本可用:spa
<dubbo:reference interface="com.foo.BarService" mock="return null" />
Mock 是 Stub 的一個子集,便於服務提供方在客戶端執行容錯邏輯,因常常須要在出現 RpcException (好比網絡失敗,超時等)時進行容錯,而在出現業務異常(好比登陸用戶名密碼錯誤)時不須要容錯,若是用 Stub,可能就須要捕獲並依賴 RpcException 類,而用 Mock 就能夠不依賴 RpcException,由於它的約定就是隻有出現 RpcException 時才執行。 ↩︎code
在 interface 旁放一個 Mock 實現,它實現 BarService 接口,並有一個無參構造函數 ↩︎htm
參考文獻:http://dubbo.incubator.apache.org/zh-cn/docs/user/demos/local-mock.html接口