Java 使用ant include(apache camel)获取最新文件
我想用ApacheCamel从SFTP获取文件 有一种格式如下: AYLIK_BELGE_MUTABAKAT_20200902.txt 因此它包含年-月-日。txt 但也可以有另一个文件,如: AYLIK_BELGE_MUTABAKAT_20200910.txt 因此,可以有很多文件,如: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
**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个文件,则这是每个轮询请求的开销 这意味着,在第一次轮询时,您将获得最新的文件,处理后,该文件将被删除或移开。在第二次轮询时,它再次获取最新的文件(之前是第二个最新的文件),以此类推