我有以下Camel路线:
<route id="myroute">
<from uri="timer://runOnce?repeatCount=1&delay=10" />
<!-- Set a new property on the exchange. -->
<to uri="bean:propSetter?method=setProp" />
<to uri="direct:fizz" />
</route>
我的PropSetter
bean:
public class PropSetter {
// Add new "buzz" ArrayList<Long> to the exchange.
public void setProp(Exchange exchange) {
exchange.setProperty("buzz", new ArrayList<Long>());
}
}
我想在没有Java bean的情况下重写它,而是使用Camel的<setProperty/>
元素。我唯一可以认为的是使用内置的-in Groovy表达式:
<route id="myroute">
<from uri="timer://runOnce?repeatCount=1&delay=10" />
<!-- Set a new property on the exchange. -->
<setProperty propertyName="buzz">
<groovy>new ArrayList<Long>();</groovy>
</setProperty>
<to uri="direct:fizz" />
</route>
但这似乎不起作用。那么如何使用XML在名为ArrayList<Long>
的交换中设置新的buzz
?
答案 0 :(得分:0)
使用Spring的util命名空间定义一个列表:
<util:list id="myList" value-type="java.lang.String">
</util:list>
然后使用简单语言,您可以访问bean并在交换属性中设置
<camel:setProperty propertyName="buzz">
<camel:simple>${bean:myList}</camel:simple>
</camel:setProperty>