日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dubbo中的Filter顺序是如何确定的

發布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dubbo中的Filter顺序是如何确定的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

服務提供方的過濾器被調用順序: EchoFilter->ClassLoaderFilter->GenericFilter->ContextFilter->(這4個是在代碼中指定的) ExceptionFilter-> ?TimeoutFilter?->MonitorFilter->?TraceFilter 服務消費方的過濾器順序: ConsumerContextFilter->FutureFilter->MonitorFilter 負責加載過濾器的類 ProtocolFilterWrapper ?

這個順序和SPI配置文件的順序并不一致。那么是什么決定了Filter的順序呢? 通過查看源代碼可以看到,在初始化Filter時,有一個對所有的過濾器排序的過程,其使用的比較類是ActivateComparator。在這個類中,可以看到,是使用Filter中的Activate類進行排序的。而Activate注解中,有一個order的屬性,這個屬性指定了Filter在chain中的順序。 通過查看EchoFilter的Activate屬性,可以看到其order = -110000,而ClassLoaderFilter的order=-30000,因此可以斷定,order值越小,其越位于調用端的最頂層。那么當order相同時(都沒有設置時),又是根據什么排序的呢? Collections.sort算法 從其說明文檔可以看出,這個算法是一個穩定的排序算法,如果兩個值相同,不會改變其前后順序。并且從其文檔可以看出,其所使用的是一個修改過的歸并排序算法。 但是Activate的compare方法故意將兩個相同的order類弄成了不同,導致排序有些變化。造成了最終上述順序。 所以導致原來配置文件中的位置為: 1、monitor 2、trace 3、exception 4、timeout 排序后變成了 1、exception 2、timeout 3、monitor 4、trace

轉載于:https://my.oschina.net/JasonZhang/blog/661445

總結

以上是生活随笔為你收集整理的dubbo中的Filter顺序是如何确定的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。