使用Camel从FTP站点读取时的故障转移

时间:2015-11-13 00:27:10

标签: ftp apache-camel

我们需要从供应商的FTP站点每小时下载多个文件。供应商提供两个ftp站点以实现容错,两个站点具有相同的文件。我想设置一个Camel路由从ftp站点A下载文件,如果它可用,如果没有尝试ftp站点B.以下代码不正确但它可能突出我想要实现的目标。

    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");

有没有人对如何实现这一目标有任何想法?

1 个答案:

答案 0 :(得分:0)

默认情况下,当连接失败时,ftp使用者会生成WARN消息而不是抛出异常,但是通过throwExceptionOnConnectionFailed属性,您可以更改为抛出异常,并处理异常 PollingConsumerPollStrategy [1] rollback()方法。

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