我们需要从供应商的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");
有没有人对如何实现这一目标有任何想法?
答案 0 :(得分:0)
默认情况下,当连接失败时,ftp使用者会生成WARN消息而不是抛出异常,但是通过throwExceptionOnConnectionFailed属性,您可以更改为抛出异常,并处理异常 PollingConsumerPollStrategy [1] rollback()方法。