我有一台物理服务器,上面运行着两个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"/>有人知道文件只准备好一次的原因吗??
问候你,伊恩
发布于 2020-07-12 13:35:43
您可以在您的场景中使用集群Quartz。http://www.quartz-scheduler.org/documentation/quartz-1.8.6/configuration/ConfigJDBCJobStoreClustering.html
https://stackoverflow.com/questions/62831202
复制相似问题