Java Quartz/Cron Mongodb并发问题



我计划拥有一个大型集合,其中包含需要由Quartz/cron作业处理的项目。因此,cron作业将设置为定期运行,并访问mongodb以查找5个最旧的项并对其进行处理。

这对于运行cron作业的单个服务器来说是可以的。但是,稍后如果我运行两个服务器,每个服务器都运行相同的cron作业,我担心这两个cron作业可能同时运行,并获取5个相同的项目,这可能会导致竞争条件问题。

避免这个问题的最佳做法是什么?

我正在考虑为每个作业设置逻辑,以获取5个状态为PENDING的最旧项目,然后立即将状态更改为PROCESSED,这样其他作业就无法处理它们。你认为这行得通吗?

我在使用石英调度器时遇到了同样的问题。你必须涉及数据库。我正在分享GitHub链接,以便您可以遵循给定的代码。

https://github.com/faizakram/Spring_MongoDb_Quartz_Cluster

任何困惑请评论,这样我就可以改进我理解的方式

感谢

最新更新