相关疑难解决方法(0)

Quartz 2.2多调度程序和@DisallowConcurrentExecution

请考虑这个例子。

一个示例Web应用程序要求scheduler.start()其启动。调度程序配置为将其作业存储在DB中。

该应用程序被复制到六个Web服务器上。

因此,如果启动六个Web服务器,则在单个DB上将有六个具有相同名称的调度程序。如https://quartz-scheduler.org/documentation/quartz-2.1.x/cookbook/MultipleSchedulers中所述

切勿针对运行(start()ed)具有相同调度程序名称的任何其他实例的同一组数据库表启动(scheduler.start())非集群实例。您可能会遇到严重的数据损坏,并且肯定会遇到不稳定的行为。

因此,这将失败。

我的问题是,如果我确定我所有的工作@DisallowConcurrentExecution都会胜任工作,否则仍然失败?


如果@DisallowConcurrentExecution没有帮助,我应该手动将一台服务器配置为某些主机

public class StartUp implements ServletContextListener {

   public void contextInitialized(ServletContextEvent event) {
       if(THIS_IS_MASTER_TOMCAT){
         scheduler.start()
       }
}
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

java quartz-scheduler

3
推荐指数
1
解决办法
6321
查看次数

标签 统计

java ×1

quartz-scheduler ×1