0

我有一台物理服务器,其中运行了两个 Apache Camel 实例。两者都包含相同的集成工件。任务是将来自服务器文件系统的文件与由 cron 作业触发的 Apache Camel 文件组件集成。文件处理应该只发生一次。因此,我将幂等模式与同一台服务器上的 Jdbc 存储库一起使用。

一般来说,它工作正常。但有时,在少数情况下,两个实例都运行并读取文件,因此文件被处理两次。在 JDBC 数据库中,密钥也被插入了两次(甚至创建的时间戳也几乎相同;它在毫秒的第三位上有所不同)。

这就是我使用文件使用者的方式:

<from uri="file:{{property.file.directory}}?scheduler=quartz2
                    &;scheduler.cron={{property.file.cronjob}}?
                    &idempotent=true
                    &readLock=idempotent
                    &idempotentKey=${file:name}-${file:size}-${date:file:yyyy-MM}
                    &idempotentRepository=#idempotentRepository"/>

有谁知道我必须要文件只准备一次吗?

问候,伊恩

4

1 回答 1

0

您可以将集群 Quartz 用于您的场景。http://www.quartz-scheduler.org/documentation/quartz-1.8.6/configuration/ConfigJDBCJobStoreClustering.html

于 2020-07-12T05:35:42.787 回答