Как заставить Camel FTP опрашивать файлы только один раз после вызова маршрута из CronScheduledRoutePolicy - PullRequest
0 голосов
/ 08 мая 2018

Я новичок в Camel FTP и нуждаюсь в небольшой помощи для выполнения задачи.

Я работаю над требованием загружать пару отчетов по FTP два раза в месяц и загружать их в SharePoint.

Я настроил FTP-маршрут с фильтром для получения необходимых файлов и политикой маршрута, используя CronScheduledRoutePolicy, чтобы запускать этот маршрут два раза в месяц. Пожалуйста, смотрите ниже конфигурации.

<!-- FileName filter for ACE Report download from CSREPORT folder -->
<bean id="aceReportFileNameFilter" class="com.xyz.ACEReportFileNameFilter" />

<bean id="aceReportDownloadStartPolicy"
    class="org.apache.camel.routepolicy.quartz2.CronScheduledRoutePolicy">
    <!-- start every 2min from monday to saturday - TESTING -->
    <property name="routeStartTime" value="0 0/2 * ? * 1-6 *" />
    <!-- Run every 2nd and 23rd of the month at 1AM - PRODUCTION -->
    <!-- <property name="routeStartTime" value="0 0 1 2,23 * ? *" /> -->
</bean>

<routeContext id="aceReportDownload" xmlns="http://camel.apache.org/schema/spring">
    <route autoStartup="false" id="CSReportFtp" routePolicyRef="aceReportDownloadStartPolicy">
        <from id="_from1"
            uri="ftp://user:pwd@host:port/reportFolder?filter=#aceReportFileNameFilter" />
        <log message="Testing ACE report FTP download" />
        <to id="_to1" uri="file://{{downloadFolderPath}}/temp" />
    </route>
</routeContext>

Маршрут загружает файлы в соответствии с использованным фильтром, однако он непрерывно опрашивает файлы, а не останавливает загрузку файлов. Вот логи с моей машины.

12: 12: 00.049 [DefaultQuartzScheduler-LISA_Worker-1] INFO oacamel.spring.SpringCamelContext - Маршрут: CSReportFtp запущен и использует из: конечной точки [ ftp: // PCP03D: xxxxxx @ localhost: 53556? CSREPORT разъединение = истина & фильтр =% 23aceReportFileNameFilter] 12: 12: 01.235 [Camel (LISA) thread # 0 - ftp: // PCP03D: xxxxxx @ localhost: 53556 / CSREPORT] INFO CSReportFtp - тестирование отчета ACE по FTP загрузки 12: 12: 01.283 [Camel (LISA) thread # 0 - ftp: // PCP03D: xxxxxx @ localhost: 53556 / CSREPORT] INFO CSReportFtp - тестирование отчета ACE по FTP загрузки 12: 12: 01.815 [Camel (LISA) thread # 0 - ftp: // PCP03D: xxxxxx @ localhost: 53556 / CSREPORT] INFO CSReportFtp - тестирование отчета ACE по FTP загрузки 12: 12: 01.846 [Camel (LISA) thread # 0 - ftp: // PCP03D: xxxxxx @ localhost: 53556 / CSREPORT] INFO CSReportFtp - тестирование отчета ACE по FTP загрузки 12: 12: 02.407 [Camel (LISA) thread # 0 - ftp: // PCP03D: xxxxxx @ localhost: 53556 / CSREPORT] INFO CSReportFtp - тестирование отчета ACE по FTP загрузки ........ ........

Я хочу, чтобы файлы загружались только один раз в соответствии с CronScheduledRoutePolicy, чтобы я мог затем загружать отчеты в SharePoint.

Я искал возможные решения и попробовал несколько вещей, таких как передача параметра отключить для закрытия FTP-соединения и попытка закрыть маршрут с использованием DSL и т. Д. Однако это не сработало.

Я сталкивался с тем, что выглядит как обходной путь (я еще не пробовал), как этот Как заставить Camel FTP загружаться только один раз по требованию

Это не точный сценарий для меня.

Может кто-нибудь посоветует интуитивно понятное решение для моего требования. Любая помощь будет принята с благодарностью. Спасибо

...