Quartz - SimpleTrigger Trigger

Please reprint from the source: http://eksliang.iteye.com/blog/2208166

I. Overview

SimpleTrigger trigger, if and only needs to be triggered once or executed periodically at a fixed time interval;

 

2. Constructor of SimpleTrigger

  1. SimpleTrigger(String name, String group): Specify the group and name of the Trigger through this constructor;
  2. SimpleTrigger(String name, String group, Date startTime): In addition to specifying the group and name of the Trigger, you can also specify the trigger development time;
  3. SimpleTrigger(String name, String group, Date startTime, Date endTime, int repeatCount, long repeatInterval): In addition to the above information, you can also specify parameters such as end time, number of repetitions, and time interval;
  4. SimpleTrigger(String name, String group, String jobName, String jobGroup, Date startTime, Date endTime, int repeatCount, long repeatInterval): This is the most complex constructor. While specifying trigger parameters, it also passes jobGroup and jobName to let The Trigger is associated with a task in the Scheduler.

3. Reference Examples

    Simple Job implementation class: print job details

 

package com.ickes.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
 * Implement the Job interface and define the tasks to run
 * @author Ickes
 */
public class SimpleJob implements Job {

	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		//print task details
		System.out.println(
				context.getJobDetail().getGroup()
				+"——"+context.getJobDetail().getName()
				+"——"+context.getTrigger().getName()
				+"——"+context.getTrigger().getGroup());
	}

}

 

 

   Scheduling with SimpleTrigger (Example 1)

 

package com.ickes.job;

import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @author Ickes
 */
public class SimpleTriggerDemo {
	public static void main(String[] args) throws Exception {
		//Step 1: Create a JobDetail instance
		JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class);
		//Step 2: Define scheduling rules through SimpleTrigger triggers: start immediately, run once every 2 seconds, and run 100 times in total
		SimpleTrigger simpleTrigger = new SimpleTrigger("t_job1","t_group_1");
		simpleTrigger.setStartTime(new Date());//Start running time
		simpleTrigger.setRepeatInterval(2000); //The unit of running interval is milliseconds
		simpleTrigger.setRepeatCount(100); //Number of runs
		//Step 3: Get a scheduler instance through SchedulerFactory
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		Scheduler scheduler = schedulerFactory.getScheduler();
		//Step 4: Register the job and trigger to the scheduler for scheduling
		scheduler.scheduleJob(jobDetail, simpleTrigger);
		//Step 5: Schedule startup
		scheduler.start();
	}
}

    The above code can also specify the running time range through setStartTime(java.util.Date startTime) and setEndTime(java.util.Date endTime) of SimpleTrigger. When the number of runs conflicts with the time range, the tasks that exceed the time range will not be executed. . For example, it can start after 60 seconds specified by simpleTrigger.setStartTime(new Date(System.currentTimeMillis() + 60000L)).

 

    Scheduling with SimpleTrigger (Example 2)

 

package com.ickes.job;

import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @author Ickes
 */
public class SimpleTriggerDemo1 {
	public static void main(String[] args) throws Exception {
		//Step 1: Create a JobDetail instance
		JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class);
		SimpleTrigger simpleTrigger = new SimpleTrigger("trigger1_1","tgroup1");
		simpleTrigger.setStartTime(new Date());//Start running time
		simpleTrigger.setRepeatInterval(2000); //The unit of running interval is milliseconds
		simpleTrigger.setRepeatCount(100); //Number of runs
		simpleTrigger.setJobGroup("j_group1");
		simpleTrigger.setJobName("j_job1");
		//Step 3: Get a scheduler instance through SchedulerFactory
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		Scheduler scheduler = schedulerFactory.getScheduler();
		//Step 4: Register the job and trigger to the scheduler for scheduling
		scheduler.addJob(jobDetail, true);
		scheduler.scheduleJob(simpleTrigger);
		//Step 5: Schedule startup
		scheduler.start();
	}
}

 

   The difference between instance 1 and instance 2 is obvious: registering a job is different from triggering a scheduler.

 

 4. TriggerUtils tool class

When constructing a Trigger instance, you can consider using the org.quartz.TriggerUtils utility class, which not only provides many methods to obtain a specific time, but also many methods to obtain common Triggers.

Reference examples are as follows

package com.ickes.job;

import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.TriggerUtils;
/**
 *
 * @author Ickes
 *
 */
public class TriggerUtilsDemo {
	public static SimpleDateFormat fomat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	/**
	 * Too many methods, but his comments are very detailed
	 * @param args
	 */
	public static void main(String[] args) {
		//Create a trigger that executes every second
		TriggerUtils.makeSecondlyTrigger("t_name");
		//创建一个每星期某一特定时间点执行一次的Trigger
		TriggerUtils.makeWeeklyTrigger("t_name", 1, 1, 1);
		//创建一个每5秒执行一次,总共执行10次的Trigger
		TriggerUtils.makeSecondlyTrigger("t_name",5,10);
		//获得时间的方法
		println(TriggerUtils.getDateOf(0, 0, 0));
		//返回下一个小时的时间,例如2015-05-04 11:20:00 返回2015-05-04 12:00:00
		println(TriggerUtils.getEvenHourDate(new Date()));	
	}
	
	public static void println(Date date){
		System.out.println(fomat.format(date));
	}
}

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326434217&siteId=291194637