浅谈Trigger

什么是Trigger?

Quartz中的触发器用来告诉调度程序作业什么时候触发。即Trigger对象是用来触发Job的 

  •  JobKey表示Job实例的标识,触发器被触发时,该指定的Job实例会执行。
  • StartTime 表示触发器的时间表首次被触发的时间。它的值的类型是Java.util.Date
  • EndTime 指定触发器的不再被触发的时间。它的值的类型是Java.util.Date

具体案例

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class HelloScheduler {
    
    public static void main(String[] args) throws SchedulerException {
        //打印当前的执行时间
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentTime = sdf.format(date);
        System.out.println("Current Time : "+currentTime);
        //获取当前时间3秒后的时间
        date.setTime(date.getTime()+3000);
        //获取距离当前时间6秒后的时间
        Date endDate = new Date();
        endDate.setTime(endDate.getTime()+6000);
        //创建一个JobDetail实例,将该实例与HelloJob class绑定
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                .withIdentity("myJob", "group1")
                .build();
        //创建一个Trigger实例,定义该Job立即执行,并且每隔2秒钟重复执行一次,直到永远
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1")
                .startAt(date)
                .endAt(endDate)
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever())
                .build();
        //创建Scheduler实例
        SchedulerFactory sfact = new StdSchedulerFactory();
        Scheduler scheduler = sfact.getScheduler();
        scheduler.start();
        scheduler.scheduleJob(jobDetail, trigger);
    }

}
import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.Trigger;


public class HelloJob implements Job{
    
    public void execute(JobExecutionContext context) throws JobExecutionException {        
        
        //打印当前的执行时间
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentTime = sdf.format(date);
        System.out.println("Current Exec Time : "+currentTime);
        //编写具体的业务逻辑        
        Trigger currentTrigger = context.getTrigger();
        System.out.println("Start Time is:"+sdf.format(currentTrigger.getStartTime()));
        System.out.println("End Time is:"+sdf.format(currentTrigger.getEndTime()));
        JobKey jobKey = currentTrigger.getJobKey();
        System.out.println("JobKey info --" +jobKey.getName()+": "+jobKey.getGroup()+": "+jobKey.getClass());
    }

}

猜你喜欢

转载自www.cnblogs.com/zhou-test/p/9725054.html
今日推荐