我创建了一条消耗来自ftp的路由:
private RouteDefinition ftpRouteOcs() {
IdempotentRepository<String> fileRep = FileIdempotentRepository.fileIdempotentRepository(new File("./downLoadedOcs"), A_MILLION, TEN_MB);
// from endpoint
FtpEndpoint<?> ftpEndpoint = getContext().getEndpoint(config.ftpUrlOcs(), FtpEndpoint.class);
ftpEndpoint.setIdempotentKey("${file:name}");
ftpEndpoint.setIdempotentRepository(fileRep);
ftpEndpoint.getConfiguration().setBinary(true);
//important!
ftpEndpoint.getConfiguration().setStepwise(false);
// no write or move operations - read only, set idempotent to true
ftpEndpoint.setNoop(true);
// only include files that match pattern
ftpEndpoint.setInclude(OCS_FILE_FILTER_PATTERN);
// fetch 1000 files in one poll...
ftpEndpoint.setMaxMessagesPerPoll(FTP_MAX_FILES_PER_POLL);
// but sort ALL files before...
ftpEndpoint.setEagerMaxMessagesPerPoll(false);
// ...by file name
ftpEndpoint.setSortBy("file:name");
// to endpoint
FileEndpoint fileEndpoint = getContext().getEndpoint("file:" + config.ftpTargetOcs(), FileEndpoint.class);
// mark finished downloads
fileEndpoint.setDoneFileName("${file:name}.done");
// ignore if exist
fileEndpoint.setFileExist(GenericFileExist.Ignore);
return from(ftpEndpoint).to(fileEndpoint).routeId(RouteIds.ftpOcs.name());
}
如您所见,我正在使用fileIdempotentRepository。文件创建正常,每个下载的文件都添加到文件中 - 我得到所有相关的调试输出。问题是重启后重新下载所有文件 - 忽略存储库。该文件仍然存在,每次运行时文件都会更新 - 使用相同的数据(创建日期保持不变,更新日期更新)。 那我的设置有什么问题呢?
答案 0 :(得分:0)
Claus Ibsen在邮件列表(http://camel.465427.n5.nabble.com/Camel-ftp-consumer-ignores-idempotent-file-repository-on-start-td5753615.html)
上回答解决方案只是添加
fileRep.start();
因此必须明确启动存储库。