Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ant include(apache camel)获取最新文件_Java_Apache Camel - Fatal编程技术网

Java 使用ant include(apache camel)获取最新文件

Java 使用ant include(apache camel)获取最新文件,java,apache-camel,Java,Apache Camel,我想用ApacheCamel从SFTP获取文件 有一种格式如下: AYLIK_BELGE_MUTABAKAT_20200902.txt 因此它包含年-月-日。txt 但也可以有另一个文件,如: AYLIK_BELGE_MUTABAKAT_20200910.txt 因此,可以有很多文件,如: **AYLIK_BELGE_MUTABAKAT_20200902.txt** **AYLIK_BELGE_MUTABAKAT_20200903.txt** **AYLIK_BELGE_MUTABAKAT_20

我想用ApacheCamel从SFTP获取文件

有一种格式如下:

AYLIK_BELGE_MUTABAKAT_20200902.txt

因此它包含年-月-日。txt

但也可以有另一个文件,如:

AYLIK_BELGE_MUTABAKAT_20200910.txt

因此,可以有很多文件,如:

**AYLIK_BELGE_MUTABAKAT_20200902.txt**
**AYLIK_BELGE_MUTABAKAT_20200903.txt**
**AYLIK_BELGE_MUTABAKAT_20200904.txt**
我应该只买最新的。根据修改的日期或文件名。他们都能工作

我使用的是SpringBoot+ApacheCamel。我的代码如下:

我的表达是:

"sftp://" +
                hostName +
                ":22" +
                mainPath +
                subPath +
                "?username=" + username +
                "&password=" + password +
                fileSecondPrefix +
                "&connectTimeout=10000" +
                "&soTimeout=40000" +
                "&timeout=40000" +
                "&stepwise=false" +
                "&maximumReconnectAttempts=4" +
                "&autoCreate=false" +//AYLIK_BELGE_MUTABAKAT_20200706.txt
                "&strictHostKeyChecking=no" +
                "&preferredAuthentications=publickey,password" +
                "&disconnect=true" +
                "&stepwise=false" +
//                "&noop=true" +
//                "&fastExistsCheck=true" +
//                "&ignoreFileNotFoundOrPermissionError=false" +
//                "&throwExceptionOnConnectFailed=true" +
//                "&localWorkDirectory=" + "/temp" +
                "&consumer.bridgeErrorHandler=true"
                ;
我的路线是:

from(GET_FILE_FROM_SFTP)
        .log(LoggingLevel.INFO, DOCUMENT_RECONCILIATION_ROUTE, "Getting the file from SFTP")
        .pollEnrich()
        .simple("${exchangeProperty.sftpExpression}")
        .timeout(5000L)
        .to(SAVE_RECEIVED_IDS)
        .end();

from(SAVE_RECEIVED_IDS)
        .log(LoggingLevel.INFO, DOCUMENT_RECONCILIATION_ROUTE, "Saving the received IDs")
        .process(saveReceivedsProcessor)
但它有时找不到文件,并在下一个根目录中为空输入文件抛出异常

**"&sortBy=file:modified"**
所以,它应该只得到最后一个

AYLIK_BELGE_MUTABAKAT_20200904.txt

如何让它工作?这确实:

&eagerMaxMessagesPerPoll=false&maxMessagesPerPoll=1
一次只取一个。但是,例如在本地,当我运行多次时,它会从最新的开始一个接一个地获取所有的数据。我想要的是每次只得到最后一个。我可以从filezilla中看到,修改日期没有改变

那么,为什么还要买其他的呢

另一个问题是有时它找不到文件。因为在运行3次之后,会获取3个文件,所以它会再次启动吗

我希望它重新连接,但我看不到它的日志或等待超时


当我创建两个文件时,它总是得到第一个文件。

FTP消费者是一个轮询消费者。它定期轮询源目录。因此,如果您只使用1个文件,则这是每个轮询请求的开销


这意味着,在第一次轮询时,您将获得最新的文件,处理后,该文件将被删除或移开。在第二次轮询时,它再次获取最新的文件(之前是第二个最新的文件),依此类推。

FTP使用者是轮询使用者。它定期轮询源目录。因此,如果您只使用1个文件,则这是每个轮询请求的开销

这意味着,在第一次轮询时,您将获得最新的文件,处理后,该文件将被删除或移开。在第二次轮询时,它再次获取最新的文件(之前是第二个最新的文件),以此类推