Верблюжий маршрут с промежуточной обработкой

Мне нужно написать маршрут Camel, который будет отправлять файл в веб-службу. Перед отправкой файла в конечную точку я должен запросить некоторую информацию в базе данных и отправить файл в конечную точку вместе с дополнительной информацией. Мне также пришлось бы переместить файл в другой каталог после завершения всего маршрута. Я смог создать отдельные части маршрута самостоятельно. Я хотел знать, как я могу сделать это за один маршрут.


person user6641655    schedule 28.03.2017    source источник


Ответы (1)


Это ваше дизайнерское решение, как это сделать. Вы можете иметь свои отдельные части в качестве подмаршрутов (это мой предпочтительный способ).

Это делает маршрут более функционально структурированным и, по крайней мере, более читабельным. Затем вы можете передать им свое сообщение (файл) одно за другим или параллельно, используя компонент multicast.

в XML DSL это будет выглядеть так:

<route id="main-route">
    <from uri="..." />
    <!-- DB processing --> 
    <to uri="direct:db-route-endpoint"/>
    <multicast parallelProcessing="false">
    <!-- No parallel processing: file will be stored after Web Service call completed
         or for parallel parallelProcessing="true" -->"
        <to uri="...web service endpoint... "/>
        <to uri="direct:store-file-endpoint"/>
    </multicast>
</route>

<route id="db-route">
    <from uri="direct:db-route-endpoint" />
    ... DB processing ...
</route>

<route id="store-file-route">
    <from uri="direct:store-file-endpoint" />
    ... save file to another directory ...
</route>
person Vadim    schedule 28.03.2017