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

Running particular quartz job on specific host

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

技术:Spring 引导、Oracle、Quartz 2.X

非常感谢!

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

或者您也可以通过 SQL

使用暂停

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

我这样做的方法是根据 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;
}