2016-12-01 4 views
0

Я создал маршрут, который должен быть прочитан с конечной точки 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 элементе. Как я могу превратить это в чтение? Пока я не нашел решения. Благодаря!

ответ

0

Используйте .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> 
+0

Кстати есть и PollingEnrich, так что вы можете опрашивать конечную точку и читать на основе некоторого интервала. Может быть, это тебе подходит? –

+0

Это трюк, спасибо :) – Fluffy