Как: Apache Camel, файлы регулярных выражений
im экспериментируя в получении camel, чтобы сделать некоторые файловые операции и передать их через брокера 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
. Имейте в виду, что include основан на регулярных выражениях Java, поэтому мы используем точка звезды указать подстановочный. Подробнее здесь:http://camel.apache.org/file2. Компонент ftp наследует 99% параметров файловый компонент, поэтому я ссылаюсь на файловую страницу wiki.
использовать include
опция, которая использует регулярное выражение Java:
include=.*2280\.xsl
обратите внимание \
до точки .
можно использовать antInclude
:
antInclude=*2280.xsl
для такого рода фильтрации я рекомендую использовать GenericFileFilter
в реализации сопоставления имен используется следующий код:
if (ObjectHelper.isNotEmpty(endpoint.getInclude())) {
if (!name.matches(endpoint.getInclude())) {
return false;
}
}
таким образом, вы можете проверить, какое регулярное выражение Вы должны использовать. В твоем случае, я думаю .*2280\.xsl
то, что вы должны использовать.