【发布时间】:2020-02-19 04:00:08
【问题描述】:
在我的场景中,Quartz 将嵌入在我的 Web 应用程序中运行,该应用程序将部署在两个节点上。我可以安排一个任务并让它在两个节点上只执行一次吗? DisallowConcurrentExecution 注解是否用于此目的?
例如,如果我安排一个每小时触发的任务,那么一天内该任务在两个节点上的总执行次数是否可以是 24 而不是 48?
【问题讨论】:
在我的场景中,Quartz 将嵌入在我的 Web 应用程序中运行,该应用程序将部署在两个节点上。我可以安排一个任务并让它在两个节点上只执行一次吗? DisallowConcurrentExecution 注解是否用于此目的?
例如,如果我安排一个每小时触发的任务,那么一天内该任务在两个节点上的总执行次数是否可以是 24 而不是 48?
【问题讨论】:
您可以将石英设置为集群模式。主要要求是您的服务的两个实例应该共享同一个数据库,因为石英基于数据库进行集群。 如果您在案例中使用集群机制,将执行 24 个作业。这些是您必须使用的一些属性。
org.quartz.scheduler.instanceName = MyClusteredScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval=20000
【讨论】:
Runtime Environments 模式。您的描述属于哪种模式? 2、集群模式下是否需要使用DisallowConcurrentExecution?