我一直在努力解决为什么有些文件没有正确下载的问题。 即使在本地测试并重新启动我的应用程序,似乎某些文件也无法完全下载。 为了使事情变得更加困难,它并不总是一致的。
的信息:
有关问题的建议或如何排除故障的建议会很棒!
路由配置(由于值来自spring-boot配置,因此人工创建了一点):
100
UPDATE1
添加public class FileRouteBuilder extends RouteBuilder {
// Cut
@Override
public void configure() throws Exception {
errorHandler(deadLetterChannel("seda:"+ROUTE_ID_ERROR_EMAIL));
from("sftp://username@hostname/OUT?noop=true&streamDownload=true&password=password&include=Data_file.*csv&idempotentRepository=#keyRepo&greedy=true&delay=5m&maxMessagesPerPoll=10&readLock=changed")
.id(routeConfig.getRouteId())
.routeDescription(routeConfig.getRouteId())
.setHeader(HEADER_FILE_SOURCE, constant(routeConfig.getRouteId()))
.to("log:feeds." + routeConfig.getRouteId() + "?level=INFO&showAll=true")
// Exclude all files oder than the specified number of hours
.filter(new FileModifiedSincePredicate(24))
.to(file:rootDir/DATA)
.to("seda:" + ROUTE_ID_ACTIVITY_EMAIL_NOTIFICATION)
.end();
}
}
}
后的观察结果。
正确下载前两个文件,但服务器上的第三个和最后一个文件没有。
binary=true
teh Data_FIle_16.csv文件的正确文件大小为192867682字节,在193255587 Data_File_12.csv
191072548 Data_File_15.csv
139929360 Data_File_16.csv
标题中正确捕获。
更新2
删除上面的所有日志和seda电子邮件组件,然后重新运行。 第三个文件仍然没有写完。
添加相关的DEBUG级别日志输出,希望它能够揭示正在发生的事情或者排除某些事情。
据我所知,日志没有显示任何可疑内容,并且没有提示_16文件写得不完整。
在SFTP服务器上是否有任何可能发生的事情,任何人都知道值得与提供商核实?
CamelFileLength
答案 0 :(得分:0)
您下载后记录消息,并使用streamDownload = true。请参阅此常见问题解答:http://camel.apache.org/why-is-my-message-body-empty.html以及如何在需要时使用流缓存。
因为消息是基于流的,所以要么不记录消息体(您可以记录标题等),然后将其路由到文件端点,以便将其直接保存为文件。