美文网首页
quartz 的监听器 -->监听job(JobListener

quartz 的监听器 -->监听job(JobListener

作者: 刘小刀tina | 来源:发表于2020-04-29 11:23 被阅读0次
    
    @Slf4j
    public class HelloJobListerner  implements Job {
        private SimpleDateFormat format;
    
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            //输出时间
            Date date = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat();
            String dataTime = dateFormat.format(date);
            log.info("当前系统时间为:"+dataTime);
        }
    
    }
    
    //创建一个类
    class HelloJobListernerDemo{
    
        public static void main(String[] args) throws SchedulerException {
            //1 获取调度器
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            //2 获取任务实例jobdetail
            JobDetail jobDetail = JobBuilder.newJob(HelloJobListerner.class)
                    .withIdentity("job1", "group1")
                    .build();
            //3 生成触发器
            SimpleTrigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("trigger1", "group1")
                    .startNow()
                    .withSchedule(SimpleScheduleBuilder.
                            repeatSecondlyForever(5).//每5秒执行一次
                            withRepeatCount(0)) //循环执行3次
                    .build();
            //4.关联任务和触发器 保证按照触发器定义的条件执行任务
            scheduler.scheduleJob(jobDetail,trigger);
            //创建并注册一个全局的Job Listerner
            //scheduler.getListenerManager().addJobListener(new MyJobListerner(), EverythingMatcher.allJobs());
            //创建并注册一个局部的Job Listerner
            scheduler.getListenerManager().addJobListener(new MyJobListerner(), KeyMatcher.keyEquals(JobKey.jobKey("job1", "group1")));
    
            //5.启动
             scheduler.start();
    
        }
    }
    
    //创建一个监听器
    @Slf4j
    class  MyJobListerner implements JobListener {
    
        //获取监听器的名称
        @Override
        public String getName() {
            String name = this.getClass().getSimpleName();
            log.info("监听器的名称为: "+name);
            return name;
        }
    
        @Override
        public void jobToBeExecuted(JobExecutionContext context) {
            String name = context.getJobDetail().getKey().getName(); //获取Job的name
            log.info("被监听的job的name是:"+name+"   Scheduler在JobDetail将要被执行时调用的方法");
    
        }
    
        @Override
        public void jobExecutionVetoed(JobExecutionContext context) {
            String name = context.getJobDetail().getKey().getName(); //获取Job的name
            log.info("Scheduler在JobDetail即将执行,但又被TriggerListerner否决时会调用的方法");
        }
    
        @Override
        public void jobWasExecuted(JobExecutionContext context, JobExecutionException e) {
            String name = context.getJobDetail().getKey().getName(); //获取Job的name
            log.info("Scheduler是在JobDetail被执行之后调用这个方法的");
        }
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:quartz 的监听器 -->监听job(JobListener

          本文链接:https://www.haomeiwen.com/subject/tdrgwhtx.html