Apache Camel:setProperty和Groovy

时间:2013-12-19 16:14:00

标签: java groovy apache-camel

我有以下Camel路线:

<route id="myroute">
    <from uri="timer://runOnce?repeatCount=1&amp;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&amp;delay=10" />

    <!-- Set a new property on the exchange. -->
    <setProperty propertyName="buzz">
        <groovy>new ArrayList&lt;Long&gt;();</groovy>
    </setProperty>

    <to uri="direct:fizz" />
</route>

但这似乎不起作用。那么如何使用XML在名为ArrayList<Long>的交换中设置新的buzz

1 个答案:

答案 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>