Java 在特定主机上运行特定quartz作业
我在集群模式下运行的quartz作业很少。有些是IO密集型作业,有些是CPU密集型作业。我要做的是在特定主机上运行CPU绑定的作业,并在另一组主机上运行IO绑定的作业。是否有任何配置可以将可以在特定机器上运行的一组作业列为白名单?我不想再制作一套石英表来做这种事情 技术:弹簧靴,甲骨文,石英2.XJava 在特定主机上运行特定quartz作业,java,quartz-scheduler,quartz.net,quartz,Java,Quartz Scheduler,Quartz.net,Quartz,我在集群模式下运行的quartz作业很少。有些是IO密集型作业,有些是CPU密集型作业。我要做的是在特定主机上运行CPU绑定的作业,并在另一组主机上运行IO绑定的作业。是否有任何配置可以将可以在特定机器上运行的一组作业列为白名单?我不想再制作一套石英表来做这种事情 技术:弹簧靴,甲骨文,石英2.X 非常感谢 我建议在Jobstore中,对于那些特定机器的每个作业,只需使用pauseJob或pauseJobGroup 或者也可以通过SQL使用暂停 或者通过环境设置,您可以切换到要禁用的作业。我这样
非常感谢 我建议在Jobstore中,对于那些特定机器的每个作业,只需使用pauseJob或pauseJobGroup 或者也可以通过SQL使用暂停
或者通过环境设置,您可以切换到要禁用的作业。我这样做的方式是根据JVM启动参数中传递的属性创建不同的调度程序实例。我使用了SpringQuartz集成,下面是它的示例代码。最重要的部分是将不应该运行的调度程序的自动启动设置为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;
}
你能分享一些关于通过SQL暂停和通过环境设置暂停的信息吗?你能看看这里的解决方案吗?看看评论部分关于使用两个不同的调度器,IOScheduler,CPUSScheduler…谢谢,上面的链接看起来很有希望。在所有作业共享同一个表的集群环境中,这是否有效?