首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使completionFromBatchConsumer()和readlock=changed在camel文件/ftp中协同工作

使completionFromBatchConsumer()和readlock=changed在camel文件/ftp中协同工作
EN

Stack Overflow用户
提问于 2012-10-24 19:15:02
回答 1查看 1.3K关注 0票数 0

我有一个文件: route camel component,它使用一个带有completionFromBatchConsumer的aggregationStrategy作为停止条件。

我的聚合器实现了CompletionAwareAggregationStrategy

路由本身运行良好。

我目前正在尝试定义一个readLock=changed策略来跳过正在由另一个进程写入的文件,这也很好用。

问题是,当文件由于readLock而被跳过时,批处理大小似乎没有更新,因此聚合器的onCompletion方法永远不会被调用,从而导致路由失效。

在计算批量大小之前,camel不应该检查readLock吗?有没有办法实现这一点或任何等效的解决方案?

TKS

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-29 19:35:06

啊,你遇到了一个警告。读锁定是在运行时应用的,并且不是急于应用的。因此批量消费者可能会看到有10个文件,但读锁目前只能应用于9个文件。如果存在读锁定超时,则会跳过该文件。如果你没有超时,那么读锁最终将被授予,并且所有10个文件都可以被处理。

我不确定是否有什么简单的事情可以做,因为完成细节可能会相应地更新,但最后一个文件可能是读锁问题。然后你就不会有扳机了。

我们可以添加一个特性,在未授予读锁的情况下发出一个空交换。然后,您需要意识到这一点,并在您的自定义聚合策略中处理此问题。

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

https://stackoverflow.com/questions/13048107

复制
相关文章

相似问题

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