Тайм-аут Apache Camel версии 3.4 не работает должным образом
Я использую эту версию Spring Boot Apache Camel
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
Очень простой сценарий, я пытаюсь скопировать файлы из одной папки в другую. В идеальном случае (без тайм-аута) маршрут должен бесконечно ждать, пока файл не попадет в исходную папку. Как только файл появится, он должен выбрать его и снова зацикливаться и ждать следующего. Он работает с Camel2.2, но не с последним.
Код:
from("timer:theTimer?period=10s")
.log("Timer Invoked . . . ")
.pollEnrich("file:data/input?delete=true&readLock=none")
.log("BODY = [ ${body} ] " )
.to("file:data/output");
Любые предложения экспертов Camel?
В результате у меня было 2 файла во входном каталоге.
Вывод с camel2.2:
INFO 9248 --- [imer://theTimer] route1 : Timer Invoked . . .
INFO 9248 --- [imer://theTimer] route1 : BODY = [ FIle1 content ]
INFO 9248 --- [imer://theTimer] route1 : Timer Invoked . . .
INFO 9248 --- [imer://theTimer] route1 : BODY = [ File2 content ]
INFO 9248 --- [imer://theTimer] route1 : Timer Invoked . . .
<<Now it waiting for file and not doing anything>> ALL GOOD
Вывод с camel3.4springboot: [ОШИБКА ОДИН РАЗ, вход DIR IS EMPTY]
INFO 13864 --- [imer://theTimer] route1 : Timer Invoked . . .
INFO 13864 --- [imer://theTimer] route1 : BODY = [ FIle1 content ]
INFO 13864 --- [imer://theTimer] route1 : Timer Invoked . . .
INFO 13864 --- [imer://theTimer] route1 : BODY = [ File2 content ]
INFO 13864 --- [imer://theTimer] route1 : Timer Invoked . . .
INFO 13864 --- [imer://theTimer] route1 : BODY = [ ]
2020-07-20 14:23:33.293 ERROR 13864 --- [imer://theTimer] o.a.c.p.e.DefaultErrorHandler : Failed delivery for (MessageId: ID-OUDQ5TZO1R-1595235193339-0-3 on ExchangeId: ID-OUDQ5TZO1R-1595235193339-0-3). Exhausted after delivery attempt: 1 caught: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot write null body to file: data\output\ID-OUDQ5TZO1R-1595235193339-0-3
1 ответ
Попробуйте установить для параметра allowNullBody значение true на конечной точке.