99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Dubbo3 本地存根

2022-04-01 17:05 更新

在 Dubbo 中利用本地存根在客戶端執(zhí)行部分邏輯

遠(yuǎn)程服務(wù)后,客戶端通常只剩下接口,而實(shí)現(xiàn)全在服務(wù)器端,但提供方有些時(shí)候想在客戶端也執(zhí)行部分邏輯,比如:做 ThreadLocal 緩存,提前驗(yàn)證參數(shù),調(diào)用失敗后偽造容錯(cuò)數(shù)據(jù)等等,此時(shí)就需要在 API 中帶上 Stub,客戶端生成 Proxy 實(shí)例,會(huì)把 Proxy 通過構(gòu)造函數(shù)傳給 Stub (Stub 必須有可傳入 Proxy 的構(gòu)造函數(shù)),然后把 Stub 暴露給用戶,Stub 可以決定要不要去調(diào) Proxy。

/user-guide/images/stub.jpg

在 spring 配置文件中按以下方式配置:

<dubbo:consumer interface="com.foo.BarService" stub="true" />

<dubbo:consumer interface="com.foo.BarService" stub="com.foo.BarServiceStub" />

提供 Stub 的實(shí)現(xiàn) (在 interface 旁邊放一個(gè) Stub 實(shí)現(xiàn),它實(shí)現(xiàn) BarService 接口,并有一個(gè)傳入遠(yuǎn)程 BarService 實(shí)例的構(gòu)造函數(shù)):

package com.foo;
public class BarServiceStub implements BarService {
    private final BarService barService;
    
    // 構(gòu)造函數(shù)傳入真正的遠(yuǎn)程代理對象
    public BarServiceStub(BarService barService){
        this.barService = barService;
    }
 
    public String sayHello(String name) {
        // 此代碼在客戶端執(zhí)行, 你可以在客戶端做ThreadLocal本地緩存,或預(yù)先驗(yàn)證參數(shù)是否合法,等等
        try {
            return barService.sayHello(name);
        } catch (Exception e) {
            // 你可以容錯(cuò),可以做任何AOP攔截事項(xiàng)
            return "容錯(cuò)數(shù)據(jù)";
        }
    }
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)