首页 文章

Camel文件轮询:在再次轮询之前完成处理批处理

提问于
浏览
0

我有一个文件丢弃 endpoints ,我从中查询 . 我需要在接收文件时按顺序轮询文件,并且我使用cron表达式仅在当天的某些时间进行轮询 . 这是我的文件输入:

file:///tmp/input?idempotent=true&moveFailed=/tmp/error&readLock=changed&readLockCheckInterval=2500&sortBy=file:modified&move=processed/&scheduler=quartz2&scheduler.cron=0+0/5+0-3,5-23+*+*+?

我遇到的问题是Camel轮询了一批文件,但随后将更新的文件写入目录,因此在后续轮询中,在上一批完成之前处理新文件 .

我在路线中添加了一些属性来显示批量大小以及是否已完成某些信息:

<camel:log message="Camel batch size: $simple{property.CamelBatchSize}, Camel Batch Index: $simple{property.CamelBatchIndex}, Camel Batch finished: $simple{property.CamelBatchComplete}"/>

如何在上一批完成之前告诉Camel不要轮询?我这样做是因为文件处理的顺序很重要 . 谢谢!

1 回答

  • 0

    不确定是否有任何现有方法可以直接通过cron job在文件路由中实现目标 . 但是,您可以使用3条路线完成任务 .

    • Cron工作路线

    • 如果收集器路由已经启动,则将挂起信号发送到Stopper路由(通过controlBus组件检查)

    • 正确启动收集器路由(由controlBus组件触发)

    • 收集器路线

    • 控制文件消费者行为

    • 批量完成时将完整信号发送到停止路径

    • 塞子路线

    • 收到信号时暂停收集器路由(由controlBus组件触发)

相关问题