當前位置:編程學習大全網 - 網站源碼 - dubbo之ProtocolFilterWrapper

dubbo之ProtocolFilterWrapper

ProtocolFilterWrapper是dubbo-rpc模塊中,dubbo-rpc-api的壹個核心類,其中核心方法buildInvokerChain,顧名思義構建invoker鏈。dubbo源碼看到這塊時,理解起來有點費勁兒,特意做記錄,方便日後查看。

1、首先,我們先看壹下方法中的3個核心變量,invoker、filter、next

2、可以清晰看到源碼中,invoker采用了匿名類 ProtocolFilterWrapper$1 實現,我們來看壹下生成的匿名內部類結構

重點關註紅框內的構造方法,以及invoke方法的實現。

OK,下面我們對buildInvokerChain的具體邏輯做分析;我們先對方法邏輯做壹個抽象,首先是原始方法

借助前面我們提到的匿名類,我們做壹下抽象,下面是抽象後的方法:

這樣看起來就簡單多了,實際上這塊邏輯就是把url裏拿到的filter包裝成Invoker,串起來;下面我們了解壹下dubbo是如何把Invoker 串起來的,為了方便理解,這裏做圖解。

假設現在有A、B、C、D、E 5個filter,初始Invoker順序如下:

最後 return last 5,這樣就把所有filter串起來了,最終的Invoker chain順序是 last 5 -> last 4 -> last 3 -> last 2 -> last 1(即 invoker 本身)。

  • 上一篇:妳好,我是易語言菜鳥,能幫我解釋下“句柄”的具體含義嗎?網上搜索很多,講得都很抽象!比如說:全局_句
  • 下一篇:如何把壹個C++的源程序移植到Android上?
  • copyright 2024編程學習大全網