分组聚合

通过分组聚合结果并返回聚合结果

功能描述

通过分组聚合结果并返回聚合结果,例如菜单服务,使用 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)