Как: Apache Camel, файлы регулярных выражений

im экспериментируя в получении camel, чтобы сделать некоторые файловые операции и передать их через брокера activeMQ, я взял этот проект от парня, который недавно ушел.

что я получил до сих пор:

    <route id="SVLFTPCOPY">
  <from uri="sftp://*****:*******@********/srv/test/?fileName=*2280.xls&amp;noop=true&amp;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 то, что вы должны использовать.