我们有石英调度程序的服务。
此服务可以相应地扩展某些需求。
我们的Quartz调度程序没有处于群集模式.
因此,我们需要根据环境变量启用或禁用调度程序。
服务不能为了有两个独立的服务而分裂。
这是我们相关的Quartz配置类:
@Configuration
public class QuartzSchedulerConfiguration {
private static final String HOURLY_CRON_EXPRESSION = "0 0 * * * ?";
private static final String MIDNIGHT_CRON_EXPRESSION = "0 0 0 * * ?";
@Bean
public JobFactory jobFactory(ApplicationContext applicationContext) {
AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
jobFactory.setApplicationContext(applicationContext);
return jobFactory;
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory, Trigger[] fitxersJobTrigger)
throws IOException {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setOverwriteExistingJobs(true);
factory.setAutoStartup(true);
factory.setJobFactory(jobFactory);
factory.setQuartzProperties(quartzProperties());
factory.setTriggers(fitxersJobTrigger);
return factory;
}
@Bean
public JobDetailFactoryBean loadPendingDocumentsJobDetail() {
return createJobDetailFactoryBean(LoadPendingDocumentsJob.class);
}
@Bean
public SimpleTriggerFactoryBean loadPendingDocumentsJobTrigger(
@Qualifier("loadPendingDocumentsJobDetail") JobDetail jobDetail) {
long interval = jobsConfiguration.get().getParameters().stream()
.filter(param -> "loadPendingDocumentsJobInterval".equals(param.getName()))
.findAny()
.map(param -> (Integer)param.getValue())
.orElse(600000); // every 10 minutes
LOG.debug("loadPendingDocumentsJobInterval = " + interval);
return createIntervalTriggerFactoryBean(jobDetail, interval);
}
private CronTriggerFactoryBean createCronTriggerFactoryBean(JobDetail jobDetail, String expression) {
CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
factoryBean.setJobDetail(jobDetail);
factoryBean.setCronExpression(expression);
factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
return factoryBean;
}
private JobDetailFactoryBean createJobDetailFactoryBean(Class<? extends Job> jobClass) {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
factoryBean.setJobClass(jobClass);
factoryBean.setDurability(true);
return factoryBean;
}
private SimpleTriggerFactoryBean createIntervalTriggerFactoryBean(JobDetail jobDetail, long interval) {
SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean();
factoryBean.setJobDetail(jobDetail);
factoryBean.setStartDelay(0L);
factoryBean.setRepeatInterval(interval);
factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
return factoryBean;
}
}有什么想法吗?
发布于 2019-08-23 10:35:01
您可以尝试在配置类上使用@ConditionalOnProperty注释。
https://stackoverflow.com/questions/57621006
复制相似问题