非集群Quartz调度程序:在应用程序启动时实例化和启动调度程序......这对多台机器是否安全?

时间:2017-10-17 13:46:44

标签: java quartz-scheduler quartz

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

@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 Job Store。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

我最终专门创建了一个启动一个调度程序实例的非集群机器。这种配置按预期工作,奇怪的错误已经消失(未确认的失火等)。