2015-11-13 1 views
0

Нам необходимо загрузить несколько файлов по часам с FTP-сайта поставщиков. Поставщик предоставляет два ftp-сайта для отказоустойчивости на обоих сайтах, имеющих одинаковые файлы. Я хотел бы настроить маршрут Camel для загрузки файлов с ftp-сайта A, если он доступен, и если не попробовать ftp-сайт B. Следующий код неверен, но он может выделить то, что я пытаюсь достичь.Отказоустойчивость при чтении с FTP-сайтов с использованием Camel

from("timer://timer1?fixedRate=true&period=60m") 
     .loadBalance() 
     .failover(-1, false, true) 
     .to("direct:ftp-symbolguides-1") 
     .to("direct:ftp-symbolguides-2") 
    .end(); 

    from("direct:ftp-symbolguides-1") 
     .to("ftp://SiteA?localWorkDirectory=c:/temp&passiveMode=true&noop=true&idempotentKey=${file:name}-${file:size}&idempotentRepository=#idempotentRepository") 
     .to("file:/c:/temp/inbox"); 

    from("direct:ftp-symbolguides-2") 
     .to("ftp://SiteB?password=publicftp&localWorkDirectory=c:/temp&passiveMode=true&noop=true&idempotentKey=${file:name}-${file:size}&idempotentRepository=#idempotentRepository") 
     .to("file:/c:/temp/inbox"); 

Есть ли у кого-нибудь мысли о том, как я могу это достичь?

ответ

0

Когда не удается установить соединение по протоколу FTP по умолчанию потребитель производит сообщение WARN вместо того, чтобы выбросить исключение, но по throwExceptionOnConnectionFailed собственности вы можете изменить, чтобы бросить исключение и обработать исключение из метода PollingConsumerPollStrategy [1] Откат().

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/PollingConsumerPollStrategy.html

+0

Благодарим вас за руководство по этому вопросу. Я очень новичок в Camel, но из того, что я могу извлечь из ваших мыслей, мне нужно будет обновить экземпляр Consumer, который передается методу отката с IP-адресом вторичного FTP-сайта, а затем вернуть false? – djsnowsill