无法更新 Camel 交换 属性

Not able to update Camel exchange property

我正在路线 1 中设置 属性 骆驼交换。我正在尝试在分离器内的第二条路线中更新相同的内容。但是在 splitter 的第二次迭代中,我得到了我在路线 1 中设置的原始值,而不是新的更新值。下面是我正在尝试的示例..

<route handleFault="true" streamCache="true" id="route1">
<from uri="cxfrs://bean://test?synchronous=true"/>
        <bean ref="testBean" method="setMyProperty"/>// setting initial value for property
        <to uri="direct:directCall"/>
</route>

<route handleFault="true" streamCache="true" id="route2">
    <from uri="direct:directcall"/>
    <log message="Inside Second call..."/>
    <split>
     <jsonpath>some Json path</jsonpath>
      <bean ref="formatConvertor" method ="convertLHMToJSON(${body})"/>

    <split>
      <jsonpath>some json path</jsonpath>
    <bean ref="PropertySetter" method ="setProperty"/> //I am setting new value in this method
     </split>
   </split> 

里面的豆子:

   public void setMyProperty(Exchange exchange) {
            exchange.setProperty("testProp", "hello");
        }

    public void setProperty(Exchange exchange) {
           sysout(exchange.getProperty("testProp").toString())//this always prints "hello"
           String x=exchange.getProperty("testProp")+some other value;// in all iterations of split I am getting 'hello' as the value of the property instead of new value
            exchange.setProperty("testProp", x);
            sysout(exchange.getProperty("testProp").toString())// this line prints the new value
        }

为什么属性没有更新?即使我尝试在 headers 中设置。同样的结果。谢谢。

您必须使用 split-aggregate 模式并在从旧交换到新交换的每次拆分迭代期间复制 属性 值,因为每次拆分迭代发生时,新交换是从源消息创建(仅携带拆分前设置的属性 & headers) recover headers value after split apache camel