0

我的应用程序当前在应用程序启动期间实例化并启动默认调度程序,使用:

@Override
public void contextInitialized(ServletContextEvent arg0) {
    try {   
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start();
    } catch (SchedulerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

该逻辑运行在云端机器以及本地开发机器上,quartz.properties 当前设置为非集群模式。该应用程序还使用 JDBC 作业存储。

我担心每台机器都有一个调度程序实例——请给我关于如何在多台机器上管理 Quartz 调度程序的建议。这个用例是否需要集群?

我安排了一个测试触发器每分钟运行一次。虽然没有重复的作业执行,但我注意到一些从未被视为失火的错过解雇。

4

1 回答 1

0

我尝试了配置和设置,并找到了适用于我的应用程序的设置。应用服务器从集群配置中提供 Web 资源;我的错误是在每个应用服务器中启动一个非集群调度程序实例。

目前,我不认为这个应用程序需要多台机器来处理预定的作业。另外,我还没有弄清楚如何在我们的云服务器上同步系统时间,这是 Quartz 集群功能的要求。

我最终专门使用了一台非集群机器来启动一个调度程序实例。此配置按预期工作,并且奇怪的错误已消失(未确认的失火等)。

于 2017-10-20T14:42:40.657 回答