Apache Camel:将Integer Value分配给Tokenizer的group属性

时间:2017-05-25 17:10:41

标签: apache-camel

这是我在这里找到解决我遇到的最近问题的第一篇文章。我在向"组"分配属性(键)值时遇到问题。 tokenize元素中的值。我们有属性占位符,我们需要读取要从配置文件中读取的值,因为此限制可能会更改。我们使用Property Placeholder尝试了任何类型的属性,如here所述,但它因无法识别的属性错误而失败。

正在使用的Camel版本是带有Spring DSL的2.15.1.redhat-621084,代码如下所示。如果需要更多详细信息,请告知我们。



<split>
  <tokenize token="\n" group="7000"/>
    ...
&#13;
&#13;
&#13;

我们只想要上面的&#34;组&#34;值可配置。对此或快速解决方法的任何帮助都非常感谢。

提前致谢, Shanks

1 个答案:

答案 0 :(得分:0)

我也无法找到配置组值的方法。所以创建这个奇怪的解决方法。也许它会对你有帮助。

<route>
        <from uri="timer:foo?repeatCount=1"/>
        <setBody>
            <constant>123;321;444;555;666;777</constant>
        </setBody>
        <setHeader headerName="tokenizeGroup">
            <simple>properties-location:group</simple>
        </setHeader>
        <split>
            <method bean="rt" method="createIterable"/>
            <log message="Tokenized: ${body}"/>
        </split>
</route>

方法createIterable如下所示:

public Object createIterable(@Header("tokenizeGroup") int group, Exchange exchange){
    TokenizerExpression tokenizer = new TokenizerExpression();
    tokenizer.setGroup(group);
    tokenizer.setToken(";");
    Expression expression = tokenizer.createExpression(exchange.getContext());
    return expression.evaluate(exchange,Object.class);
}