Dubbo之服務分組、分組聚合。
服務分組
當一個介面有多種實現時,可以用group區分。
<dubbo:service group="feedback" interface="com.xxx.IndexService" />
<dubbo:service group="member" interface="com.xxx.IndexService" />
<dubbo:reference id="feedbackIndexService" group="feedback" interface="com.xxx.IndexService" />
<dubbo:reference id="memberIndexService" group="member" interface="com.xxx.IndexService" />
任意組:(2.2.0以上版本支援,總是隻調一個可用組的實現)
<dubbo:reference id="barService" group="*" interface="com.foo.IndexService" />
分組聚合
按組合並返回結果,比如選單服務,介面一樣,但有多種實現,用group區分,現在消費方需從每種group中呼叫一次返回結果,合併結果返回,這樣就可以實現聚合選單項。
從2.1.0版本開始支援
配置如:(搜尋所有分組)
<dubbo:reference interface="com.xxx.MenuService" group="*" merger="true" />
或:(合併指定分組)
<dubbo:reference interface="com.xxx.MenuService" group="aaa,bbb" merger="true" />
或:(指定方法合併結果,其他未指定的方法,將只調用一個Group)
<dubbo:reference interface="com.xxx.MenuService" group="*">
<dubbo:method name="getMenuItems" merger="true"/>
</dubbo:reference>
或:(某個方法不合並結果,其他都合併結果)
<dubbo:reference interface="com.xxx.MenuService" group="*" merger="true">
<dubbo:method name="getMenuItems" merger="false"/>
</dubbo:reference>
或:(指定合併策略,預設根據返回值型別自動匹配,如果同一型別有兩個合併器時,需指定合併器的名稱)
<dubbo:reference interface="com.xxx.MenuService" group="*">
<dubbo:method name="getMenuItems" merger="mymerge"/>
</dubbo:reference>
或:(指定合併方法,將呼叫返回結果的指定方法進行合併,合併方法的引數型別必須是返回結果型別本身)
<dubbo:reference interface="com.xxx.MenuService" group="*">
<dubbo:method name="getMenuItems" merger=".addAll"/>
</dubbo:reference>