我有一台物理服务器,其中运行了两个 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"/>
有谁知道我必须要文件只准备一次吗?
问候,伊恩