Quartz Scheduler Tutorial

Quartz scheduler

Java Quartz Scheduer Cron Trigger Example

CronTrigger

CronTrigger is often more useful than SimpleTrigger, if you need a job-firing schedule that recurs based on calendar-like notions, rather than on the exactly specified intervals of SimpleTrigger.

With CronTrigger, you can specify firing-schedules such as every Friday at noon, or every weekday and 9:30 am, or even every 5 minutes between 9:00 am and 10:00 am on every Monday, Wednesday and Friday during January.

CronTriggerApp.java

package com.candidjava.quartz;
 
import java.util.Date;
 
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
 
public class CronTriggerApp {
  public static void main(String[] args) {
 
    try {
 
      SchedulerFactory sf = new StdSchedulerFactory();
      Scheduler scheduler = sf.getScheduler();
 
      JobDetail job = JobBuilder.newJob(Main.class)
          .withIdentity("dummyJobName", "group1").build();
 
      Date startTime = DateBuilder.nextGivenSecondDate(null, 10);
 
      // run every 20 seconds infinite loop
      CronTrigger crontrigger = TriggerBuilder
          .newTrigger()
          .withIdentity("TwentySec", "group1")
          .startAt(startTime)
          // startNow()
          .withSchedule(CronScheduleBuilder.cronSchedule("0/20 * * * * ?"))
          .build();
 
      scheduler.start();
      scheduler.scheduleJob(job, crontrigger);
 
      // scheduler.shutdown();
 
    } catch (SchedulerException se) {
      se.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    }
 
  }
 
}

Main.java

package com.candidjava.quartz;
 
import java.util.Date;
 
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
 
 
public class Main implements Job
{
  public void execute(JobExecutionContext context) throws JobExecutionException 
  {
    
    System.out.println("Trigger Starts.."+new Date());	
    
  }
  
}

Output:

Trigger Starts..Wed Jun 01 15:22:40 IST 2016

Trigger Starts..Wed Jun 01 15:23:00 IST 2016

Trigger Starts..Wed Jun 01 15:23:20 IST 2016

Trigger Starts..Wed Jun 01 15:23:40 IST 2016

Trigger Starts..Wed Jun 01 15:24:00 IST 2016

Trigger Starts..Wed Jun 01 15:24:20 IST 2016

Trigger Starts..Wed Jun 01 15:24:40 IST 2016