【发布时间】:2019-04-13 07:25:10
【问题描述】:
我计划拥有一个包含需要由 Quartz/cron 作业处理的项目的大型集合。因此,cron 作业将设置为定期运行并访问 mongodb 以查找 5 个最旧的项目并处理它们。
这对于运行 cron 作业的单个服务器来说是可以的。但是,稍后如果我运行 2 个服务器,每个服务器都运行相同的 cron 作业,我担心这 2 个 cron 作业可能会同时运行并抓取 5 个相同的项目,这可能会导致竞争条件问题。
避免这个问题的最佳做法是什么?
我正在考虑为每个作业添加逻辑以获取具有 PENDING 状态的 5 个最旧的项目,然后立即将状态更改为 PROCESSED 以便其他作业无法处理它们。你认为这会奏效吗?
【问题讨论】:
标签: java mongodb cron scheduled-tasks quartz-scheduler