【问题标题】:Java Quartz/Cron Mongodb Concurrency IssueJava Quartz/Cron Mongodb 并发问题
【发布时间】:2019-04-13 07:25:10
【问题描述】:

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

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

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

我正在考虑为每个作业添加逻辑以获取具有 PE​​NDING 状态的 5 个最旧的项目,然后立即将状态更改为 PROCESSED 以便其他作业无法处理它们。你认为这会奏效吗?

【问题讨论】:

    标签: java mongodb cron scheduled-tasks quartz-scheduler


    【解决方案1】:

    我在使用石英调度程序时遇到了同样的问题。 您必须涉及数据库。我正在分享 GitHub 链接,以便您可以按照给定的代码进行操作。

    https://github.com/faizakram/Spring_MongoDb_Quartz_Cluster

    如有任何困惑,请发表评论,以便我改进理解方式

    谢谢

    【讨论】:

    • github 缺少一些文档,您介意用外行的术语解释一下这将如何解决问题吗?
    • 我从石英网站获得了文档。您也可以从那里找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多