I have seen a post with a solution that might work but it was 9 years ago.
public class MySchedulerFactoryBean extends org.springframework.scheduling.quartz.SchedulerFactoryBean {
@Autowired
private @Value("${enable.quartz.tasks}") boolean enableQuartzTasks;
@Override
public void afterPropertiesSet() throws Exception {
if (enableQuartzTasks) {
super.afterPropertiesSet();
}
}
}
Are there any possible ways to use the same setting on this method?
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setTriggers(
fpCronTriggerFactoryBean().getObject(),
psCronTriggerFactoryBean().getObject(),
ofbCronTriggerFactoryBean().getObject(),
mglCronTriggerFactoryBean().getObject());
return schedulerFactoryBean;
}
Basically, for example, I would like for fpCronTriggerFactoryBean().getObject()
not to be triggered or any specific job instance in that manner by either true
or false
or 1
or 0
conditions.
UPDATE:
I think I may have figured out the configuration.
@Value("${enable.fp.quartz.tasks}")
private boolean enableFpQuartzTasks;
@Value("${enable.ps.quartz.tasks}")
private boolean enablePsQuartzTasks;
@Value("${enable.ofb.quartz.tasks}")
private boolean enableOfbQuartzTasks;
@Value("${enable.mgl.quartz.tasks}")
private boolean enableMglQuartzTasks;
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
if (enableFpQuartzTasks) {
schedulerFactoryBean.setTriggers(fpCronTriggerFactoryBean().getObject());
}
if (enablePsQuartzTasks) {
schedulerFactoryBean.setTriggers(psCronTriggerFactoryBean().getObject());
}
if (enableOfbQuartzTasks) {
schedulerFactoryBean.setTriggers(ofbCronTriggerFactoryBean().getObject());
}
if (enableMglQuartzTasks) {
schedulerFactoryBean.setTriggers(mglCronTriggerFactoryBean().getObject());
}
return schedulerFactoryBean;
}
application.properties -
enable.fp.quartz.tasks = false
enable.ps.quartz.tasks = false
enable.ofb.quartz.tasks = false
enable.mgl.quartz.tasks = true
Now my question would be, is there a way to reiterate this into for each so that it could have one setting inside application.properties
? Like 1
and 0
and space delimited? For example, enable.job.task= 0 0 1 1
.
Any input is appreciated, thanks!