3

我正在使用 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+"")

控制台日志:

信息 | Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) is started 0 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 是出发信息 | JMX 已启用 10 [main] INFO org.apache.camel.management.ManagedManagementStrategy - JMX 已启用 INFO | 已加载 185 个类型转换器 208 [main] INFO org.apache.camel.impl.converter.DefaultTypeConverter - 已加载 185 个类型转换器 INFO | AllowUseOriginalMessage 已启用。如果不需要访问原始消息,则建议关闭此选项,因为它可能会提高性能。395 [main] INFO org.apache.camel.impl.DefaultCamelContext - AllowUseOriginalMessage 已启用。如果不需要访问原始消息,然后建议关闭此选项,因为它可能会提高性能。信息 | 未使用 StreamCaching。如果使用流,则建议启用流缓存。查看更多详情 http://camel.apache.org/stream-caching.html 395 [main] INFO org.apache.camel.impl.DefaultCamelContext - StreamCaching 未使用。如果使用流,则建议启用流缓存。在http://camel.apache.org/stream-caching.html查看更多细节 信息 | 端点配置为 noop=true,因此强制端点也是幂等的 395 [main] INFO org.apache.camel.component.file.FileEndpoint - 端点配置为 noop=true,因此强制端点也是幂等的 INFO | 使用基于默认内存的幂等存储库,缓存最大大小:1000 395 [main] INFO org.apache.camel.component.file.FileEndpoint - 使用基于默认内存的幂等存储库,缓存最大大小:1000 路线:route1 开始并使用:端点 [file://./?fileName=Datos.xml&noop=true] 502 [main] INFO org.apache.camel.impl.DefaultCamelContext - 路线:route1 开始并使用:端点 [ file://./?fileName=Datos.xml&noop=true] 信息 | 路由:route2 从 Endpoint[direct://ftp] 504 [main] INFO org.apache.camel.impl 开始并使用。DefaultCamelContext - 路由:route2 开始并使用:端点 [direct://ftp] INFO | 共有 2 条路线,其中 2 条已启动。504 [main] INFO org.apache.camel.impl.DefaultCamelContext - 总共 2 条路由,其中​​ 2 条已启动。信息 | Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 开始时间为 0.504 秒 507 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1 ) 开始于 0.504 秒 创建了默认 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 信息 | 图片:route2 开始并使用:Endpoint[direct://ftp] INFO | 共有 2 条路线,其中 2 条已启动。504 [main] INFO org.apache.camel.impl.DefaultCamelContext - 总共 2 条路由,其中​​ 2 条已启动。信息 | Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 开始时间为 0.504 秒 507 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1 ) 开始于 0.504 秒 创建了默认 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 信息 | 图片:route2 开始并使用:Endpoint[direct://ftp] INFO | 共有 2 条路线,其中 2 条已启动。504 [main] INFO org.apache.camel.impl.DefaultCamelContext - 总共 2 条路由,其中​​ 2 条已启动。信息 | Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 开始时间为 0.504 秒 507 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1 ) 开始于 0.504 秒 创建了默认 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 信息 | 图片:504 [main] INFO org.apache.camel.impl.DefaultCamelContext - 总共 2 条路由,其中​​ 2 条已启动。信息 | Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 开始时间为 0.504 秒 507 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1 ) 开始于 0.504 秒 创建了默认 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 信息 | 图片:504 [main] INFO org.apache.camel.impl.DefaultCamelContext - 总共 2 条路由,其中​​ 2 条已启动。信息 | Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 开始时间为 0.504 秒 507 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1 ) 开始于 0.504 秒 创建了默认 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 信息 | 图片:504 秒 507 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 在 0.504 秒内开始 创建了默认 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 信息 | 图片:504 秒 507 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 在 0.504 秒内开始 创建了默认 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 信息 | 图片:XPathBuilder - 创建默认 XPathFactory com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl@5434283f 信息 | 图片:XPathBuilder - 创建默认 XPathFactory com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl@5434283f 信息 | 图片:ftp://190.0.56.190:8021/pruebasumman/conductor/71708375.jpg 1635 [骆驼 (camel-1) 线程 #0 - file://./] 信息 route1 - imagen: ftp://190.0.56.190:8021 /pruebasumman/导体/71708375.jpg 信息 | Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1) 正在关闭 10521 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.15.1.redhat-621084 (CamelContext: camel-1)正在关闭 INFO | 开始正常关闭 2 条路由(超时 300 秒) 10524 [main] INFO org.apache.camel.impl.DefaultShutdownStrategy - 开始正常关闭 2 条路由(超时 300 秒)等待,因为仍有 3 次正在进行的和待处理的交换要完成,在 300 秒内超时。10524 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和未决的交换完成,在 300 秒内超时。信息 | 等待,因为仍有 3 个正在进行和未决的交换完成,在 299 秒内超时。11525 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行和未决的交换完成,在 299 秒内超时。信息 | 等待,因为仍有 3 个正在进行和未决的交换完成,在 298 秒内超时。12528 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行和未决的交换完成,在 298 秒内超时。信息 | 等待,因为仍有 3 次正在进行和待处理的交换要完成,在 297 秒内超时。13529 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换完成,在 297 秒内超时。信息 | 等待,因为仍有 3 次正在进行和待处理的交换要完成,在 296 秒内超时。14540 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和未决的交换完成,在 296 秒内超时。信息 | 等待,因为仍有 3 次正在进行的和未决的交换要完成,在 295 秒后超时。15555 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换完成,在 295 秒内超时。信息 | 等待,因为仍有 3 个正在进行和待处理的交换要完成,在 294 秒内超时。16568 [骆驼(camel-1)线程#2 - ShutdownTask] INFO org.apache.camel.impl。DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和未决的交换要完成,在 294 秒内超时。信息 | 等待,因为仍有 3 次正在进行和待处理的交换要完成,在 293 秒后超时。17569 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行和未决的交换完成,在 293 秒内超时。信息 | 等待,因为仍有 3 次正在进行的和未决的交换要完成,在 292 秒内超时。18574 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换完成,在 292 秒内超时。信息 | 等待,因为仍有 3 次正在进行和待处理的交换要完成,在 293 秒后超时。17569 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行和未决的交换完成,在 293 秒内超时。信息 | 等待,因为仍有 3 次正在进行的和未决的交换要完成,在 292 秒内超时。18574 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换完成,在 292 秒内超时。信息 | 等待,因为仍有 3 次正在进行和待处理的交换要完成,在 293 秒后超时。17569 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行和未决的交换完成,在 293 秒内超时。信息 | 等待,因为仍有 3 次正在进行的和未决的交换要完成,在 292 秒内超时。18574 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换完成,在 292 秒内超时。DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换要完成,在 293 秒后超时。信息 | 等待,因为仍有 3 次正在进行的和未决的交换要完成,在 292 秒内超时。18574 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换完成,在 292 秒内超时。DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换要完成,在 293 秒后超时。信息 | 等待,因为仍有 3 次正在进行的和未决的交换要完成,在 292 秒内超时。18574 [Camel (camel-1) thread #2 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - 等待,因为仍有 3 个正在进行的和待处理的交换完成,在 292 秒内超时。

提前致谢。

4

1 回答 1

4

以二进制模式下载图像文件

默认情况下,Camel FTP 以 ASCII 模式下载文件。

添加binary=true到您的 ftp 路由将从 ASCII 模式变为二进制模式

于 2018-04-10T03:59:21.857 回答