【问题标题】:Does Quartz support execute once on multiple node?Quartz 是否支持在多个节点上执行一次?
【发布时间】:2020-02-19 04:00:08
【问题描述】:

在我的场景中,Quartz 将嵌入在我的 Web 应用程序中运行,该应用程序将部署在两个节点上。我可以安排一个任务并让它在两个节点上只执行一次吗? DisallowConcurrentExecution 注解是否用于此目的?

例如,如果我安排一个每小时触发的任务,那么一天内该任务在两个节点上的总执行次数是否可以是 24 而不是 48?

【问题讨论】:

    标签: java quartz


    【解决方案1】:

    您可以将石英设置为集群模式。主要要求是您的服务的两个实例应该共享同一个数据库,因为石英基于数据库进行集群。 如果您在案例中使用集群机制,将执行 24 个作业。这些是您必须使用的一些属性。

    org.quartz.scheduler.instanceName = MyClusteredScheduler
    org.quartz.scheduler.instanceId = AUTO
    org.quartz.jobStore.isClustered = true
    org.quartz.jobStore.clusterCheckinInterval=20000
    

    请参阅文档 http://www.quartz-scheduler.org/documentation/quartz-1.8.6/configuration/ConfigJDBCJobStoreClustering.html

    【讨论】:

    • 还有两个问题: 1. 正如document 所说,有四种Runtime Environments 模式。您的描述属于哪种模式? 2、集群模式下是否需要使用DisallowConcurrentExecution
    • 1 该描述属于所有类型的环境,只要所有运行quartz的服务实例共享同一个数据库即可。2不需要使用DisallowConcurrentExecution,因为该注解可以在RamJobStore中使用不支持集群。
    • 您也可以查看此链接stackoverflow.com/questions/35292420/…
    • 很棒的答案。谢谢! @user06062019
    猜你喜欢
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2016-04-28
    相关资源
    最近更新 更多