zoukankan      html  css  js  c++  java
  • 浅谈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());
        }
    
    }
  • 相关阅读:
    [原]【实例化需求】1.FitNesse工具应用简介
    [原][问题解决]常见问题的5种解决办法(由Jenkins问题解决谈起)
    [原][自动化测试]Robot Framework Selenium基本使用
    [原]好玩的Linux,关于时间cal命令
    [原][问题解决]Romote Control 图形化界面显示问题解决办法
    【SBE】由需求管理谈起
    [Robot]关于robot的几个学习网站
    coolite中在UserControl中使用Coolite.AjaxMethods方法
    javascript实现页面加载进度条(转)
    coolite 在前台更新Window中控件的值
  • 原文地址:https://www.cnblogs.com/zhou-test/p/9725054.html
Copyright © 2011-2022 走看看