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

inkz8wg9  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(369)

我想用apache camel从sftp获取文件。
格式如下:
aylik\u belge\u mutabakat\u 20200902.txt文件
所以它包含年-月-日。文本
但是可以有另一个文件,如:
aylik\u belge\u mutabakat\u 20200910.txt文件
因此,可以有很多文件,如:


**AYLIK_BELGE_MUTABAKAT_20200902.txt**
**AYLIK_BELGE_MUTABAKAT_20200903.txt**
**AYLIK_BELGE_MUTABAKAT_20200904.txt**

我应该只买最新的。根据修改日期或文件名。它们都能工作。
我使用的是spring boot+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\u belge\u mutabakat\u 20200904.txt文件
如何才能让它工作?这确实:

&eagerMaxMessagesPerPoll=false&maxMessagesPerPoll=1

一次只吃一个。但以local为例,当我运行多次时,它会从最新的开始一个接一个地获取所有的数据。我想要的是每次只得到最后一个。从filezilla可以看出,修改日期没有改变。
那么,为什么还有其他的呢?
另一个问题是有时它找不到文件。因为在3次运行之后,3个文件被获取,所以它又开始了?
我想重新连接,但我不能看到它的日志或等待超时。
当我创建两个文件时,它总是第一个文件。

mspsb9vt

mspsb9vt1#

ftp使用者是轮询使用者。它定期轮询源目录。因此,如果您只使用1个文件,则这是每个轮询请求。
这意味着在第一次轮询时,您会得到最新的文件,在处理之后,它会被删除或移开。在第二次轮询时,它再次获取最新的文件(之前是第二个最新的文件),以此类推。

相关问题