运行 特定主机上的特定石英作业
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;
}
我在集群模式下 运行 执行的 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;
}