我怎么知道Apache Camel路由没有更多要复制的文件

时间:2014-06-06 17:12:59

标签: java apache-camel

我正在编写简单的命令行应用程序,它将文件从ftp服务器复制到本地驱动器。让我们假设我使用以下路由定义:

    File tmpFile = File.createTempFile("repo", "dat");
    IdempotentRepository<String> repository = FileIdempotentRepository.fileIdempotentRepository(tmpFile);
    from("{{ftp.server}}") 
        .idempotentConsumer(header("CamelFileName"), repository)
        .to("file:target/download")
        .log("Downloaded file ${file:name} complete.");

其中ftp.server类似于:

ftp://ftp-server.com:21/mypath?username=foo&password=bar&delay=5

假设ftp服务器上的文件不会随时间而改变。如何检查应对程序是否已完成或是否还有一些要复制的文件?我需要这个,因为我希望在复制完所有文件后完成我的应用程序。

2 个答案:

答案 0 :(得分:1)

了解批量消费者

ftp使用者将使用文件数设置一些交换属性,如果是最后一个文件等。

答案 1 :(得分:0)

您是否可以控制发布FTP文件的结尾?例如。它是您的服务器和您的客户,还是您可以作为客户提出请求?

如果是这样,您可以要求在批处理结束时添加一个标记文件。这是一个单字节文件,您可以查看同意的名称 - 当该文件出现时,您知道批次已完成。

如果您经常下载大量文件并且批处理过程需要很长时间才能复制到服务器端的磁盘,这是一种非常有用的技术。例如。某个流媒体流程会生成一个文件。