Spring Quartz Scheduler API


How to make spring quartz scheduler as the global variable

  1. After creating a scheduler object from Scheduler Factory make it as global access.
  2. So we can access scheduler from anywhere of our application.
  3. By using @Bean we can create scheduler object at global level.
@Bean
private Scheduler getScheduler() {
	StdSchedulerFactory factory = new StdSchedulerFactory();
	try {
		factory.initialize(new ClassPathResource("quartz.properties").getInputStream());
		return factory.getScheduler();
	} catch (Exception e) {
		e.printStackTrace();
	}
	return null;
}
  1. Access scheduler variable using @Autowired
@Autowired
private Scheduler scheduler;

How to delete all jobs of a spring quartz scheduler

scheduler.clear();

How to delete a particular job of a spring quartz scheduler

JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("email_schedule").build();
Trigger trigger = TriggerBuilder.newTrigger().forJob(job)
                       .withSchedule(getScheduleBuilder(config.getScheduledTime())).build();
try {
	scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
	e.printStackTrace();
}

Delete the job by key

JobKey jobName = JobKey.jobKey("email_schedule");
scheduler.deleteJob(jobName);

How to reschedule job of a spring quartz scheduler

scheduler.rescheduleJob(oldTriggerKey, newTriggerKey);

How to resume all jobs of a spring quartz scheduler

scheduler.resumeAll();