КАК: файлы Apache Camel, Regex
Я экспериментирую с тем, чтобы заставить верблюда выполнять некоторые файловые операции и передавать их через брокера activeMQ. Я взял этот проект у парня, который недавно ушел.
что я получил так далеко:
<route id="SVLFTPCOPY">
<from uri="sftp://*****:*******@********/srv/test/?fileName=*2280.xls&noop=true&idempotent=false"/>
<to uri="file:/srv/data/test/destination/"/>
<to uri="activemq:queue:svl.ftp.copy"/>
</route>
он работает до точки, где выполняется маршрут без каких-либо ошибок, но все равно не копирует файл в локальный файл.
Есть идеи?,
4 ответа
Да, вам нужно использовать опцию include / exclude / filter, если вы хотите отфильтровать файлы на основе шаблонов. Опция fileName предназначена для одного файла.
Так что в вашем случае удалите опцию fileName и замените ее на include=.*2280.xsl
, Имейте в виду, что включение основано на регулярных выражениях Java, поэтому мы используем точку-звездочку для обозначения подстановочного знака. Более подробная информация здесь: http://camel.apache.org/file2. Компонент ftp наследует 99% опций файлового компонента, поэтому я ссылаюсь на вики-страницу файла.
Использовать include
опция, которая использует регулярное выражение Java:
include=.*2280\\.xsl
Пожалуйста, помните \\
перед точкой .
В качестве альтернативы используйте antInclude
:
antInclude=*2280.xsl
Для такого рода фильтрации я рекомендую использовать GenericFileFilter
При реализации сопоставления имен используется следующий код:
if (ObjectHelper.isNotEmpty(endpoint.getInclude())) {
if (!name.matches(endpoint.getInclude())) {
return false;
}
}
Таким образом, вы можете проверить, какое регулярное выражение вы должны использовать. В твоем случае, я думаю .*2280\\.xsl
это то, что вы должны использовать.