【问题标题】:Disable Quartz Job(s) For Specific Server为特定服务器禁用 Quartz 作业
【发布时间】:2012-11-19 19:59:51
【问题描述】:

我们的应用程序部署到 2 个 Web 服务器以实现负载平衡和冗余。我们有几个每天运行一次的 Quartz 作业。该作业只需要在其中一个 Web 服务器上执行,而不是同时在两个服务器上执行。最终,我们可能会将这些作业转移到作业服务器上,但现在,有没有办法通过配置或环境变量或我可以做的其他方式使作业仅在我的一台服务器上运行?

【问题讨论】:

    标签: grails tomcat6 quartz-scheduler


    【解决方案1】:

    QuartzConfig.groovy 中,您可以为特定环境启用或禁用 Quartz 插件。

    environments {
        runQuartz {
            autoStartup = true
        }
        dontRunQuartz {
            autoStartup = false
        }
    }
    

    所以一种方法是在 Tomcat 启动参数中使用 -Dgrails.env=runQuartz-Dgrails.env=dontRunQuartz

    让你的 Quartz Job 尝试锁定一个共享数据库表是一个可怕的 hack - 获得锁定的作业可以运行,否则,中止。

    我认为第三种选择是使用 JDBC 作业存储,尽管我没有使用它的经验。在Quartz plugin docs中简要提及。

    【讨论】:

    • 这些看起来像是一些有效的选项。尤其是工作商店,我在文档中对此进行了掩饰。当我得到一些工作时,我会在这里更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2011-05-24
    • 1970-01-01
    • 2014-08-28
    • 2020-09-24
    • 2018-07-01
    相关资源
    最近更新 更多