分组聚合
通过分组聚合结果并返回聚合结果
功能描述
通过分组聚合结果并返回聚合结果,例如菜单服务,使用 group 区分同一个接口的多个实现,现在消费者需要从每个 group 调用一次并返回结果,合并后返回结果,所以您可以实现聚合的菜单项。
有关相关代码,请参考 dubbo 项目中的示例
使用场景
服务分组和多个版本
如何使用
搜索所有组
<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>
指定合并策略
指定合并策略,默认是根据返回值类型自动匹配,如果存在两种相同类型的 combiner,则需要指定 combiner 的名称 [合并结果扩展](../../../reference-manual/spi/ description/merger)
<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>
提示
支持自 2.1.0
版本
上次修改时间:2023 年 1 月 2 日:增强 en 文档 (#1798) (95a9f4f6c1c)