2017-10-17 33 views
0

我的应用程序当前实例化和使用过程中的应用程序启动时自动载入默认调度:非集群Quartz Scheduler:在应用程序启动时实例化和启动调度程序...对多台机器来说是安全的吗?

@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的建议。这个用例是否需要集群?

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

+0

你能详细说明你的用例吗?从你所描述的内容来看,它不是很清楚。您的用例是否需要多个实例通过形成一个集群来共享负载,或者您只是寻求持久性支持?你的每个节点是否管理自己的工作负载? – Srinivas

+0

@Sprinivas玩过不同的配置后,我发现了一个适用于该应用的设置。我会在下面的答案中写更多关于它的内容。 – plsplox

回答

0

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

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

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

相关问题