Можно ли прочитать файл после получения события? - PullRequest
1 голос
/ 01 октября 2019

Я использую ActiveMQ Broker со встроенными верблюжьими маршрутами. Я хочу прочитать файл после получения события.

<pseudo>
 from Event A
 read File XY
 to Event B with Body from File XY
</pseuod>

Я просто попытался переместить файлы из временного каталога на основе события, но записано только событие B. В файле журнала отсутствуют сообщения об исключениях или ошибках.

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

        <!-- You can use Spring XML syntax to define the routes here using the <route> element -->
        <route>
            <description>Example Camel Route</description>
            <from uri="activemq:example.A"/>
            <from uri="file://tmp/a?delete=true"/>
            <to uri="file://tmp/b?overruleFile=copy-of-${file:name}"/>
            <to uri="activemq:example.B"/>
        </route>
</camelContext>

Обновление с рабочим решением для одного файла:

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

        <!-- You can use Spring XML syntax to define the routes here using the <route> element -->
        <route>
            <description>Example Camel Route</description>
            <from uri="activemq:example.A"/>
            <pollEnrich>
               <constant>file:///tmp/a?fileName=file1</constant>
            </pollEnrich>
            <log message="file content  ${body}"/>
            <to uri="activemq:example.B"/>
        </route>
    </camelContext>

1 Ответ

1 голос
/ 01 октября 2019

Для этого вам нужно использовать Content Enrichers. Это именно то, что вы ищете.

<route>
    <from uri="activemq:example.A"/>
    <pollEnrich>
        <constant>file://tmp/a?delete=true</constant>
    </pollEnrich>
    <to uri="activemq:example.B"/>
</route>

Имейте в виду, что для верблюда версии 2.15 или старше

pollEnrich не имеет доступа к данным из текущего Exchange, что означает, что при опросе он не может использовать ни один из существующих заголовковВозможно, вы установили на бирже. Например, вы не можете установить имя файла в заголовке Exchange.FILE_NAME и использовать pollEnrich для использования только этого файла. Для этого вы должны установить имя файла в URI конечной точки.

...