首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除集群中的已处理文件apache-camel

删除集群中的已处理文件apache-camel
EN

Stack Overflow用户
提问于 2017-01-03 10:07:49
回答 2查看 1.4K关注 0票数 0

我使用apache来处理在ftp通道上接收到的文件。我的应用程序部署在集群(4个节点)中,为此,我使用RedisIdempotentRepository来确保单个节点处理文件。我的问题是,我想在处理后删除文件,如果我使用delete=true,在文件完成时处理该文件并将其删除的节点A,节点B已经删除它,因为节点B将不通过筛选器,因此它将直接访问删除。

我想知道如何只允许节点A删除文件?

代码语言:javascript
复制
from("sftp://host:port/folder?delete=true)
 .idempotentConsumer(simple("${file:onlyname}"),
     RedisIdempotentRepository.redisIdempotentRepository(redisTemplate, "camel-repo"))
 .bean("orderTrackingFileProcessor");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-08 14:38:11

我用pollEnrich解决了这个问题

在处理结束时添加删除步骤:

代码语言:javascript
复制
.pollEnrich(remoteLocation + "?delete=true&fileName=${file:name}");

完整示例路由:

代码语言:javascript
复制
String remoteLocation = "sftp://host:port/folder";

from(remoteLocation)
 .idempotentConsumer(simple("${file:onlyname}"),
     RedisIdempotentRepository.redisIdempotentRepository(redisTemplate, "camel-repo"))
 .bean("orderTrackingFileProcessor")
 .pollEnrich(remoteLocation + "?delete=true&fileName=${file:name}");
票数 1
EN

Stack Overflow用户

发布于 2017-01-03 21:23:23

将ftp端点配置为直接使用redis幂等存储库,而不是之后路由中的幂等使用者EIP。这确保只有一个ftp使用者正在处理同一个文件。

如果你有骆驼在行动,第二版书,它涵盖在交易章节的下半部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41440962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档