如何创建基于计时器的骆驼轮询路由?

时间:2016-12-01 10:00:03

标签: apache-camel

我创建了一条应该从OPC-UA端点读取的路由。应基于计时器每秒执行读取操作。我找到的每个示例都显示该路由只能有一个from项。我的路线看起来像这样:

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
  <route id="opctorest">
    <from uri="timer://simpleTimer?period=1000"/>
    <log message="Triggered Route: opctorest: Sensorreading body: ${body}"/>
    <to uri="milo-client:tcp://0.0.0.0:4840/freeopcua/server?nodeId=2&amp;namespaceUri=http://examples.freeopcua.github.io"/>        
    <convertBodyTo type="java.lang.String"/>        
    <to uri="stream:out"/>
  </route>
</camelContext>

当我部署路由时,它会每秒调用一次,但它写入端点,因为调用是在to元素中声明的。我怎么能把这变成一个读?到目前为止我找不到解决方案。谢谢!

1 个答案:

答案 0 :(得分:2)

当您想要在路线中间阅读时,使用.enrich()将其变为读取。 http://camel.apache.org/content-enricher.html

对于您的示例类似于(未测试):

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
  <route id="opctorest">
    <from uri="timer://simpleTimer?period=1000"/>
    <log message="Triggered Route: opctorest: Sensorreading body: ${body}"/>
    <enrich uri="milo-client:tcp://0.0.0.0:4840/freeopcua/server?nodeId=2&amp;namespaceUri=http://examples.freeopcua.github.io"/>        
    <convertBodyTo type="java.lang.String"/>        
    <to uri="stream:out"/>
  </route>
</camelContext>