无法更新 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
我正在路线 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