【问题标题】:Move files on ftp在 ftp 上移动文件
【发布时间】:2015-07-22 07:28:43
【问题描述】:

我正在使用 Apache Camel Spring 框架。我有一个组件 FTP(从 ftp 获取文件)和 Bean(处理文件并将其存储在数据库中)。我所缺少的是当我处理这些文件并将其存储在数据库中时,我必须检查插入或更新是否成功(这也有效)。如果操作成功,我必须将文件移动到 ftp 上的另一个文件夹,如果不成功,我必须将它移动到 ftp 上的另一个文件夹。

所以我问是否有一种简单的方法可以将文件从位置 dirA 复制到 dirB

【问题讨论】:

  • 骆驼路线很简单。 FTP -> 豆。 Bean 获取消息(来自 FTP 的文件)并将其插入数据库。我可以检查插入是否成功,我只需要知道如何将文件从一个文件夹移动到另一个文件夹。例如:读取位置 _ftp://10.10.10.10/toRead/somefile.csv 上的文件 -> 处理它并将其存储在数据库中 -> 将其移动到 _ftp://10.10 .10.10/inDB/ (这是我缺少的部分)。我认为这是我能提供的最好的解释。希望你能理解
  • 查看 moveFailed 选项 - camel.apache.org/file2

标签: java ftp apache-camel


【解决方案1】:

你想知道的都在这里Apache Camel: File2 搜索 movemoveFailed

如果插入不成功,您可能会抛出CamelException。然后 Camel 会将文件移动到您指定的文件夹中。

ftp://10.10.10.10/toRead?move=inDB&moveFailed=notInDB

【讨论】:

    【解决方案2】:

    由于我没有你的代码,我将通过展示我将如何处理这种情况来回答:

    根据bean处理的结果,做两条独立的路由。

    from("{{your.ftp.source}}")
        .bean( new ProcessAndStoreFileBean())
        .choice()
            .when(property("fileProcessingResult").equalsTo(true))
                .to("ftp://yourserver/Destination/Folder/Success")
            .otherwise()
                .to("ftp://yourserver/Destination/Folder/Failure")
        .end();
    

    在 Bean 方法中,我将制作:

    class ProcessAndStoreFileBean {
    
        @Handler
        public void processAndSaveInDb(Exchange exchange){
    
            // many line to do the job...
    
            if( success ) 
                exchange.setProperty("fileProcessingResult", true);
            else{
                exchange.setProperty("fileProcessingResult", false);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多