You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Camel 3.20.0:XML配置Splitter+Aggregate分组JSON数组报错求助

问题解决与正确配置实现

报错原因

你直接将GroupedBodyAggregationStrategy的全类名写入aggregationStrategy属性,但该属性的作用是引用注册表中已注册的bean实例名称,而非类名,因此Camel无法找到对应名称的bean,抛出找不到聚合策略的错误。

正确实现方案

方案一:直接指定聚合策略类(无需提前注册bean)

在<aggregate>标签中使用type属性替代aggregationStrategy,直接指定聚合策略的全类名,Camel会自动实例化该类:

<route>
    <from uri="splitter"/>
    <split>
        <!-- 拆分整个JSON数组,每个元素为单个JSON对象 -->
        <jsonpath>$</jsonpath>
        <aggregate type="org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy"
                   completionSize="10" completionTimeout="1000">
            <!-- 所有拆分出的元素都归为同一组聚合 -->
            <correlationExpression>
                <constant>true</constant>
            </correlationExpression>
            <!-- 将聚合后的List对象序列化为JSON数组 -->
            <marshal>
                <json/>
            </marshal>
            <!-- 发送分组后的JSON数组到下一路由 -->
            <to uri="transformer"/>
        </aggregate>
    </split>
</route>

方案二:注册聚合策略为Bean后引用(适用于Spring环境)

先在Spring配置中注册聚合策略Bean:

<bean id="groupedBodyAggStrategy" class="org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy"/>

然后在路由中通过ref属性引用该Bean:

<route>
    <from uri="splitter"/>
    <split>
        <jsonpath>$</jsonpath>
        <aggregate ref="groupedBodyAggStrategy"
                   completionSize="10" completionTimeout="1000">
            <correlationExpression>
                <constant>true</constant>
            </correlationExpression>
            <marshal>
                <json/>
            </marshal>
            <to uri="transformer"/>
        </aggregate>
    </split>
</route>

额外注意事项

  1. 修复原配置的语法错误:原配置中< from uri : splitter>、< to uri : transformer>的语法错误,需改为标准的<from uri="splitter"/>、<to uri="transformer"/>;同时<aggregate>标签未闭合,需补全</aggregate>。
  2. 确保依赖齐全:需确保项目中引入了camel-jsonpath和camel-jackson(或其他JSON组件)依赖,否则JSONPath拆分和序列化会失败。

内容的提问来源于stack exchange,提问作者Sahil Upneja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:05:09