Class QuartzModule

java.lang.Object
io.jooby.quartz.QuartzModule
All Implemented Interfaces:
Extension

public class QuartzModule extends Object implements Extension
Scheduler module using Quartz: http://www.quartz-scheduler.org.

 {
    install(new QuartzModule(SampleJob.class));

 }

 public class SampleJob implements Job {

   #64;Scheduled("10m")
   public void execute(JobExecutionContext context) {

   }
 }
 
Implementation of Job is optional:

 public class MyJobs {

   #64;Scheduled("1m")
   public void everyMinute() {
     ....
   }

   #64;Scheduled("1h")
  *   public void everyHour() {
  *     ....
  *   }
 }
 
Cron expression are supported too. Check the Scheduled annotation for possible schedule expressions.

Job key are generated from container class and method name. Example: SampleJob.execute, MyJob.everyMinute, MyJob.everyHour.

Jobs can be enabled/disabled (paused) at start up time by setting the enabled property for each job key:

   org.quartz.jobs.SampleJob.execute.enabled = false
 
Now the SampleJob.execute is going to be paused at startup time.

The QuartzApp added a REST API to trigger, interrupt, pause, resume jobs.

Since:
2.5.1
Author:
edgar
  • Constructor Details

    • QuartzModule

      public QuartzModule(Class<?>... jobs)
      Creates Quartz module and register the given jobs.
      Parameters:
      jobs - Job classes.
    • QuartzModule

      public QuartzModule(List<Class<?>> jobs)
      Creates Quartz module and register the given jobs.
      Parameters:
      jobs - Job classes.
    • QuartzModule

      public QuartzModule(@NonNull org.quartz.Scheduler scheduler, Class<?>... jobs)
      Creates Quartz module and register the given jobs. Uses an user provided schedule, schedule is started at application start up time and shutdown on application shutdown.
      Parameters:
      scheduler - Provided scheduler.
      jobs - Job classes.
    • QuartzModule

      public QuartzModule(@NonNull org.quartz.Scheduler scheduler, List<Class<?>> jobs)
      Creates Quartz module and register the given jobs. Uses an user provided schedule, schedule is started at application start up time and shutdown on application shutdown.
      Parameters:
      scheduler - Provided scheduler.
      jobs - Job classes.
  • Method Details

    • cleanStaleJobs

      public QuartzModule cleanStaleJobs(boolean cleanStaleJobs)
      Lookup for existing (persisted) jobs and compare with the job list from QuartzModule(Class[]). Delete any persisted job that is not in the list.
      Parameters:
      cleanStaleJobs - True to clear/delete stale job and triggers.
      Returns:
      This module.
    • cleanJobs

      public QuartzModule cleanJobs(boolean cleanJobs)
      Safely clear/delete all jobs before schedule startup. Use with caution.
      Parameters:
      cleanJobs - True to clear/delete all jobs and triggers.
      Returns:
      This module.
    • install

      public void install(@NonNull Jooby application) throws Exception
      Specified by:
      install in interface Extension
      Throws:
      Exception
    • newScheduler

      @NonNull public static org.quartz.Scheduler newScheduler(@NonNull Jooby application)
      Creates a new scheduler.
      Parameters:
      application - Application.
      Returns:
      New scheduler.
    • newScheduleFactory

      @NonNull public static org.quartz.impl.StdSchedulerFactory newScheduleFactory(@NonNull Jooby application)
      Creates a new scheduler factory.
      Parameters:
      application - Application.
      Returns:
      New scheduler factory.