在特定主机上运行特定的石英作业

时间:2018-05-24 17:31:52

标签: java quartz-scheduler quartz.net quartz

我在集群模式下运行的石英作业很少。有些是IO密集型的,有些是CPU密集型的工作。我想要做的是在特定主机上运行CPU绑定作业,并在另一组主机上运行IO绑定作业。是否有任何配置可以将可以在特定计算机上运行的一组作业列入白名单?我不想创建另一套石英表做这种事情。

Tech:Spring boot,Oracle,Quartz 2.X

非常感谢!

2 个答案:

答案 0 :(得分:0)

我建议在Jobstore中,只为这些特定机器的每个作业使用pauseJob或pauseJobGroup。

或者您也可以通过SQL

使用暂停

或者通过环境设置,您可以切换到要禁用的作业。

答案 1 :(得分:0)

我这样做的方法是根据JVM启动参数中传递的属性创建不同的调度程序实例。我使用了Spring quartz集成,这里是示例代码。最重要的部分是为不应运行的调度程序将自动启动设置为false。这样我就可以创建不同的调度程序,但只启动了在属性中配置的调度程序。

 @Bean
public SchedulerFactoryBean schedulerFactory(DataSource dataSource, JobFactory jobFactory)
        throws IOException {
    SchedulerFactoryBean factory = new SchedulerFactoryBean();
    factory.setBeanName("myscheduler");
    factory.setDataSource(dataSource);
    factory.setJobFactory(jobFactory);
    factory.setQuartzProperties(getQuartzProperties());
    if (!System.getProperty(SCHEDULER_NAME).contains("myscheduler")) {
        factory.setAutoStartup(false);
    }
    return factory;
}