真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

DubboProviderFilter鏈?zhǔn)窃趺礃?gòu)建的

這篇文章主要介紹“Dubbo Provider Filter鏈?zhǔn)窃趺礃?gòu)建的”,在日常操作中,相信很多人在Dubbo Provider Filter鏈?zhǔn)窃趺礃?gòu)建的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Dubbo Provider Filter鏈?zhǔn)窃趺礃?gòu)建的”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

按需定制開發(fā)可以根據(jù)自己的需求進(jìn)行定制,網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站構(gòu)思過程中功能建設(shè)理應(yīng)排到主要部位公司網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站的運(yùn)用實(shí)際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實(shí)際意義

provider端的Filter鏈構(gòu)建是在初始化流程中構(gòu)建的,我們知道初始化流程肯定會走到方法org.apache.dubbo.remoting.transport.netty4.NettyServer#doOpen中,可以在該方法打個(gè)斷點(diǎn),然后啟動provider服務(wù),調(diào)用棧信息如下:

Dubbo Provider Filter鏈?zhǔn)窃趺礃?gòu)建的

從調(diào)用棧中方法 org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper#export 代碼來看,buildInvokerChain會構(gòu)建provider的Filter鏈:

public  Exporter export(Invoker invoker) throws RpcException {
    if (UrlUtils.isRegistry(invoker.getUrl())) {
        return protocol.export(invoker);
    }
    // invoker就是直接調(diào)用對應(yīng)方法的代碼,JavassistProxyFactory
    return protocol.export(buildInvokerChain(invoker, SERVICE_FILTER_KEY, CommonConstants.PROVIDER));
}
 

從上述代碼來看,buildInvokerChain就是構(gòu)建Filter鏈的邏輯,通過SPI方式進(jìn)行加載,F(xiàn)Ilter配置路徑為META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter,配置內(nèi)容如下:

echo=org.apache.dubbo.rpc.filter.EchoFilter
generic=org.apache.dubbo.rpc.filter.GenericFilter
genericimpl=org.apache.dubbo.rpc.filter.GenericImplFilter
token=org.apache.dubbo.rpc.filter.TokenFilter
accesslog=org.apache.dubbo.rpc.filter.AccessLogFilter
activelimit=org.apache.dubbo.rpc.filter.ActiveLimitFilter
classloader=org.apache.dubbo.rpc.filter.ClassLoaderFilter
context=org.apache.dubbo.rpc.filter.ContextFilter
consumercontext=org.apache.dubbo.rpc.filter.ConsumerContextFilter
exception=org.apache.dubbo.rpc.filter.ExceptionFilter
executelimit=org.apache.dubbo.rpc.filter.ExecuteLimitFilter
deprecated=org.apache.dubbo.rpc.filter.DeprecatedFilter
compatible=org.apache.dubbo.rpc.filter.CompatibleFilter
timeout=org.apache.dubbo.rpc.filter.TimeoutFilter
 

注意,上述配置的Filter是包括Consumer和Provider的,初始化provider只會用到provider側(cè)的Filter配置,具體Filter實(shí)現(xiàn)類會通過group來區(qū)分PROVIDER或者CONSUMER,對應(yīng)的buildInvokerChain邏輯如下:

private static  Invoker buildInvokerChain(final Invoker invoker, String key, String group) {
    Invoker last = invoker;
    List filters = ExtensionLoader.getExtensionLoader(Filter.class).getActivateExtension(invoker.getUrl(), key, group);

    if (!filters.isEmpty()) {
        for (int i = filters.size() - 1; i >= 0; i--) {
            final Filter filter = filters.get(i);
            final Invoker next = last;
            last = new Invoker() {
                @Override
                public Result invoke(Invocation invocation) throws RpcException {
                    return filter.invoke(next, invocation);
                }
            };
        }
    }
    return last;
}
 

buildInvokerChain邏輯會按照順序進(jìn)行構(gòu)建Filter過濾鏈,由于FIlter實(shí)現(xiàn)類未設(shè)置@Activate注解的順序,因此Filter過濾鏈的前后順序就是在META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter文件配置的順序,這點(diǎn)要注意。

到此,關(guān)于“Dubbo Provider Filter鏈?zhǔn)窃趺礃?gòu)建的”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


名稱欄目:DubboProviderFilter鏈?zhǔn)窃趺礃?gòu)建的
URL網(wǎng)址:http://weahome.cn/article/psdoch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部