Компонент файла верблюда непрерывно читает один и тот же файл и не обнаруживает другие файлы.
У меня есть верблюжий маршрут,
<camelContext trace="false" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file:C:/Books/input_dir?noop=true"/>
<dynamicRouter>
<method ref="fileRouter" method="routeFiles"></method>
</dynamicRouter>
</route>
</camelContext>
<bean id="fileRouter" class="org.test.demo.DynamicRouter"/>
и Router as,
public class DynamicRouter {
public String routeFiles(Exchange exchange){
final String fileName = (String) exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY);
System.out.println("FILENAME: "+fileName);
if(fileName.contains("survival")){
return "file:C:/Books/output_dir";
}else {
return "file:C:/Books/target_dir";
}
}
}
Всякий раз, когда файл говорит, что beahomelist упал в папку C: /Books/input_dir
он считывает первый файл и никогда не останавливается, поскольку журнал ниже
FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist FILENAME: beahomelist....
и не обнаруживать никаких дальнейших файлов, помещенных в одну папку. Несмотря на то, что noop = true дается, так бывает. Просьба представить некоторые предложения по этому вопросу. Я использую версию верблюда: 2.13.0
Прочтите документацию о динамическом маршрутизаторе eip, см. Осторожно! в верхней части окна
Хотя похоже, что вместо динамического маршрутизатора вы должны использовать "dynamic to", см. Этот FAQ
Так что просто используйте
<recipientList>
<method ref="fileRouter" method="routeFiles"></method>
</recipientList>