Верблюд: чтение и запись из одного каталога - PullRequest
1 голос
/ 02 июля 2019

У меня есть этот верблюжий маршрут:

final String URI_FILE = "file:{{PATH}}";
final String POOLER = "&scheduler=quartz2&scheduler.cron=0+0/10+*+*+*+?";

from(URI_FILE + POOLER)
.pollEnrich().simple("{{URL_CHECKER}}",String.class).aggregationStrategy(new myEstratey())
.choice()
    .when(exchangeProperty("CONTINUE").isEqualTo(true))
        .log("Condition was met")
        .to(URI_DIRECT) //To another route
     .endChoice()
     .otherwise()
        .log("I'll try again later")
        .to(URI_FILE) 
.endChoice();

Я хочу прочитать файл из PATH каждый 10 минут , а затем проверить условие с помощью pollEnrich. Если условие выполнено, маршрут продолжается. В другом случае я хочу вернуть файл в тот же каталог ( PATH ).

Этот маршрут работает нормально и даже показывает сообщение журнала "Я попробую еще раз позже", но после этого файл просто исчезает и не возвращается в PATH

Что происходит? В верблюде нельзя делать это?

Спасибо !!

1 Ответ

3 голосов
/ 02 июля 2019

Файл, скорее всего, переопределен в целевом каталоге, но затем, после завершения, он перемещается в каталог .camel.

Ожидаемое поведение, см. Документация по компонентам файла :

Все операции перемещения или удаления выполняются после (после команды) маршрутизации.


Лучше откатить свой маршрут, он по умолчанию сохранит файл в исходном каталоге.

final String URI_FILE = "file:{{PATH}}";
final String POOLER = "&scheduler=quartz2&scheduler.cron=0+0/10+*+*+*+?";

from(URI_FILE + POOLER)
.pollEnrich().simple("{{URL_CHECKER}}",String.class).aggregationStrategy(new myEstratey())
.choice()
    .when(exchangeProperty("CONTINUE").isEqualTo(true))
        .log("Condition was met")
        .to(URI_DIRECT) //To another route
     .endChoice()
     .otherwise()
        .log("I'll try again later")
        .rollback() // rollback processing and keep file in original directory
.endChoice();
...