Apache camel ApacheCamel:从父exchange的部分设置其属性(拆分)

Apache camel ApacheCamel:从父exchange的部分设置其属性(拆分),apache-camel,Apache Camel,我为一个exchange创建了一个拆分器,它解压缩文件并根据行数对其进行拆分(使用Unix命令“split”)。将包含这些部分的消息列表作为消息返回 然后设置这些属性,因为它们需要独立处理。此外,完成这些部分后,需要处理父级交换。现在,我需要在子对象上设置一些属性,以便在父对象上也设置这些属性。但我能想到的唯一方法是重新编写setProperty部分。有没有办法在没有冗余的情况下实现这一点 我也尝试过另一种方法,即在父对象上设置属性,并尝试在子对象上访问属性也不起作用 for (String f

我为一个exchange创建了一个拆分器,它解压缩文件并根据行数对其进行拆分(使用Unix命令“split”)。将包含这些部分的消息列表作为消息返回

然后设置这些属性,因为它们需要独立处理。此外,完成这些部分后,需要处理父级交换。现在,我需要在子对象上设置一些属性,以便在父对象上也设置这些属性。但我能想到的唯一方法是重新编写setProperty部分。有没有办法在没有冗余的情况下实现这一点

我也尝试过另一种方法,即在父对象上设置属性,并尝试在子对象上访问属性也不起作用

for (String feed: pc.parseUri("{{feedSources}}").split(",")) {
        from("{{"+feed +".source}}").routeId(feed)
        .setProperty("workDirectory", simple("{{workDirectory}}"))
        .setProperty("feedName", simple(feed))
        .setProperty("tableName", simple("{{"+feed+".tableName}}"))
        .setProperty("options", simple("{{"+feed+".options}}"))
        .split(beanExpression(new FileSplitter(), "split"))
        .setProperty("dateFormat", simple("{{" + feed + ".dateFormat}}"))
        .setProperty("headerFormat", simple("{{" + feed + ".headerFormat}}"))
        .process(FileKeyProcessorFactory.getProcessor(feed))
        .to("{{"+feed+".destination}}")
        .end()
        .process(new RSProcessor());

还有一些属性需要设置。重写代码似乎不太好。还可以选择什么。

使用拆分器上的
聚合策略
将每个拆分消息中的更改合并到父拆分器的传出消息中

您可以在以下网址和其他支持聚合策略的EIP上了解更多信息。

例如:

<beans xmlns="http://www.springframework.org/schema/beans">
  <bean id="groupExchangeAggregationStrategy" 
    class="org.apache.camel.processor.aggregate.GroupedExchangeAggregationStrategy"
  />
</beans>
<split strategyRef="groupExchangeAggregationStrategy">
  <xpath>//</xpath>
</split>

//

谢谢你,克劳斯。如果我们想在拆分之间保持相同的属性值,这也可能吗?(如果其中一个修改它,其他人可以看到新值)