我使用apache camel创建一个ftp客户端,用于将某些文件下载到某个本地目录。该程序读取一个xml文件,以获取将从ftp中获取的文件的名称。除了下载的文件已损坏外,该程序似乎有效。现在我试图下载一些图像文件,但我得到的是14.9Kb并且已损坏,没有显示错误信息。
这是我的代码:
主
public void main() throws FileNotFoundException {
BasicConfigurator.configure();
RutaFtp routeBuilder = new RutaFtp();
CamelContext ctx = new DefaultCamelContext();
try {
ctx.addRoutes(routeBuilder);
ctx.start();
Thread.sleep(10000);
ctx.stop();
}
catch (Exception e) {
e.printStackTrace();
}
}
骆驼路线:
from("file:./?fileName=Datos.xml&noop=true")
.split(xpath("//Datos/imagen/text()"))
.setProperty("rutaArchivo", this.body())
.log(LoggingLevel.INFO, "imagen: ${body}")
.process(ExtraerNombre).to("direct:ftp").end();
from("direct:ftp")
.pollEnrich("ftp://"+user+"@"+ftp+"/?password="+password+"&recursive=true&passiveMode=true&fileName=${body}&delete="+borrado+"")
.to("file:C:/outputFolder?flatten=true").end();
}
我已尝试使用streamDownload参数,但可以防止下载文件(我不知道原因)
.pollEnrich("ftp://"+user+"@"+ftp+"/?password="+password+"&recursive=true&passiveMode=true&streamDownload=true&fileName=${body}&delete="+borrado+"")
控制台日志:
INFO | Apache Camel 2.15.1.redhat-621084(CamelContext:camel-1)是 从0开始[主要] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084(CamelContext:camel-1)正在启动 信息| JMX启用10 [主要] INFO org.apache.camel.management.ManagedManagementStrategy - JMX是 启用INFO |加载185型转换器208 [主要] INFO org.apache.camel.impl.converter.DefaultTypeConverter - 已加载185 类型转换器INFO | AllowUseOriginalMessage已启用。如果访问 不需要原始消息,那么建议转向 此选项关闭,因为它可以提高性能。 395 [主要]信息 org.apache.camel.impl.DefaultCamelContext - AllowUseOriginalMessage 已启用。如果不需要访问原始消息,那么它 建议关闭此选项,因为它可能会提高性能。 信息| StreamCaching未使用。如果使用流然后它 建议启用流缓存。详情请见 http://camel.apache.org/stream-caching.html 395 [主要]信息 org.apache.camel.impl.DefaultCamelContext - StreamCaching不在 使用。如果使用流,则建议启用流缓存。 在http://camel.apache.org/stream-caching.html INFO上查看更多详情 |端点配置为noop = true,因此强制端点为 幂等也是395 [主要] INFO org.apache.camel.component.file.FileEndpoint - 已配置端点 noop = true所以强制端点也是幂等的INFO | 使用具有缓存最大大小的基于默认内存的幂等存储库: 1000 395 [main] INFO org.apache.camel.component.file.FileEndpoint - 使用具有缓存最大大小的基于默认内存的幂等存储库: 1000 INFO |路由:route1启动并消耗来自: 端点[file://./?fileName = Datos.xml& noop = true] 502 [main] INFO org.apache.camel.impl.DefaultCamelContext - 路由:route1已启动和 消费来自:端点[file://./?fileName = Datos.xml& noop = true] INFO |路由:route2从以下开始并消耗:端点[direct:// ftp] 504 [main] INFO org.apache.camel.impl.DefaultCamelContext - 路线:route2 从以下开始和消费:Endpoint [direct:// ftp] INFO |总计2 路线,其中2个开始。 504 [主要]信息 org.apache.camel.impl.DefaultCamelContext - 总共2条路线,其中 2开始了。信息| Apache Camel 2.15.1.redhat-621084(CamelContext: camel-1)开始于0.504秒507 [主要] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084(CamelContext:camel-1)在0.504秒内启动INFO |创建默认的XPathFactory com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl@5434283f 1533 [Camel(camel-1)thread#0 - file://。/] INFO org.apache.camel.builder.xml.XPathBuilder - 创建默认值 的XPathFactory com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl@5434283f INFO | imagen:ftp://190.0.56.190:8021/pruebasumman/conductor/71708375.jpg 1635 [Camel(camel-1)thread#0 - file://。/] INFO route1 - imagen: ftp://190.0.56.190:8021/pruebasumman/conductor/71708375.jpg INFO | Apache Camel 2.15.1.redhat-621084(CamelContext:camel-1)正在关闭 down 10521 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084(CamelContext:camel-1)正在关闭 向下信息|开始正常关闭2个路由(超时300 秒)10524 [主要]信息 org.apache.camel.impl.DefaultShutdownStrategy - 开始优雅 关闭2路由(超时300秒)INFO |等待有 还有3个飞行和挂起的交换完成,超时300 秒。 10524 [Camel(camel-1)thread#2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个飞行和挂起的交换完成,超时300 秒。信息|等待仍有3个机上飞机待定 交换完成,超时299秒。 11525 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个飞行和待完成的交换完成,299超时 秒。信息|等待仍有3个机上飞机待定 交换完成,超时298秒。 12528 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个飞行和待完成的交换完成,298超时 秒。信息|等待仍有3个机上飞机待定 交换完成,297秒超时。 13529 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个机上和待完成的交换完成,297超时 秒。信息|等待仍有3个机上飞机待定 交换完成,在296秒内超时。 14540 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个飞行和待完成的交换完成,296超时 秒。信息|等待仍有3个机上飞机待定 交换完成,在295秒内超时。 15555 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个飞行和待完成的交换完成,295超时 秒。信息|等待仍有3个机上飞机待定 交换完成,294秒超时。 16568 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个飞行和待完成的交换完成,在294超时 秒。信息|等待仍有3个机上飞机待定 交换完成,293秒超时。 17569 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个飞行和挂起的交换完成,293超时 秒。信息|等待仍有3个机上飞机待定 交换完成,在292秒内超时。 18574 [骆驼(骆驼-1) 线程#2 - ShutdownTask]信息 org.apache.camel.impl.DefaultShutdownStrategy - 等待有 还有3个机上和待完成的交换完成,292超时 秒。
提前致谢。
答案 0 :(得分:2)
以二进制模式
下载图像文件
默认情况下,Camel FTP通过ASCII模式下载文件。
将binary=true
添加到您的ftp路由将从ASCII模式转为二进制模式