• Quartz(5):quartz监听器


    一.JobListener

    (1)getName:获取该JobListener的名称

    (2)jobToBeExecuted:scheduler在JobDetail将要被执行时调用该方法

    (3)jobExecutionVetoed:scheduler在JobDetail即将被执行,但又被TriggerListener否决时调用。

    (4)jobWasExcuted:scheduler在JobDetail被执行后调用该方法

    自定义一个监听器:

    public class MyJobListener implements JobListener {
        @Override
        public String getName() {
            return this.getClass().getName();
        }
    
        @Override
        public void jobToBeExecuted(JobExecutionContext context) {
            System.out.println("scheduler在JobDetail将要被执行");
        }
    
        @Override
        public void jobExecutionVetoed(JobExecutionContext context) {
            System.out.println("scheduler在JobDetail即将被执行,但又被TriggerListener否决");
        }
    
        @Override
        public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
            System.out.println("scheduler在JobDetail被执行后");
        }
    }
    

     加入监听器:

            //创建并注册一个全局job listener
            //     public void addJobListener(JobListener jobListener, Matcher<JobKey> matcher); 添加监听器的方法
            //scheduler.getListenerManager().addJobListener(new MyJobListener(), EverythingMatcher.allJobs());//
            //创建并注册一个特定组job listener
            //scheduler.getListenerManager().addJobListener(new MyJobListener(), GroupMatcher.groupContains("group12"));//组监听器匹配器
            //创建并注册一个局部job listener
            scheduler.getListenerManager().addJobListener(new MyJobListener(), KeyMatcher.keyEquals(JobKey.jobKey("job1","group1")));
    
    /*        public static JobKey jobKey(String name) {
                return new JobKey(name, null);
            }
    
            public static JobKey jobKey(String name, String group) {
                return new JobKey(name, group);
            }*/
    

     运行结果:

     二.TriggerListener

    与JobListenerListener用法类似,不过多介绍

    (1) getName方法:获取触发器的名称
    (2) triggerFired方法:当与监听器相关联的Trigger被触发,Job上的execute()方法将被执行时,Scheduler就调用该方法。
    (3) vetoJobExecution方法:在 Trigger 触发后,Job 将要被执行时由 Scheduler 调用这个方法。TriggerListener 给了一个选择去否决 Job 的执行。假如这个方法返回 true,这个 Job 将不会为此次 Trigger 触发而得到执行。
    (4) triggerMisfired方法:Scheduler 调用这个方法是在 Trigger 错过触发时。你应该关注此方法中持续时间长的逻辑:在出现许多错过触发的 Trigger 时,长逻辑会导致骨牌效应。你应当保持这上方法尽量的小。
    (5) triggerComplete方法:Trigger 被触发并且完成了 Job 的执行时,Scheduler 调用这个方法。
    scheduler.getListenerManager().addTriggerListener(new MyTriggerListener(),EverythingMatcher.allTriggers());
    

    三.SchedulerListener

    使用方法与JobListener类似

    1) jobScheduled方法:用于部署JobDetail时调用

    2) jobUnscheduled方法:用于卸载JobDetail时调用

    3) triggerFinalized方法:当一个 Trigger 来到了再也不会触发的状态时调用这个方法。除非这个 Job 已设置成了持久性,否则它就会从 Scheduler 中移除。

    4) triggersPaused方法:Scheduler 调用这个方法是发生在一个 Trigger 或 Trigger 组被暂停时。假如是 Trigger 组的话,triggerName 参数将为 null。

    5) triggersResumed方法:Scheduler 调用这个方法是发生成一个 Trigger 或 Trigger 组从暂停中恢复时。假如是 Trigger 组的话,假如是 Trigger 组的话,triggerName 参数将为 null。参数将为 null。
    6) jobsPaused方法:当一个或一组 JobDetail 暂停时调用这个方法。
    7) jobsResumed方法:当一个或一组 Job 从暂停上恢复时调用这个方法。假如是一个 Job 组,jobName 参数将为 null。
    8) schedulerError方法:在 Scheduler 的正常运行期间产生一个严重错误时调用这个方法。
    9) schedulerStarted方法:当Scheduler 开启时,调用该方法
    10) schedulerInStandbyMode方法: 当Scheduler处于StandBy模式时,调用该方法
    11) schedulerShutdown方法:当Scheduler停止时,调用该方法
    12) schedulingDataCleared方法:当Scheduler中的数据被清除时,调用该方法。

  • 相关阅读:
    git创建分支与合并分支
    web实现点击左侧导航,右侧加载不同的网页(这种布局多用于后台管理系统)
    小程序通过用户授权获取手机号之getPhoneNumber
    git 本地仓库与远程仓库建立连接
    multipartUpload上传图片到阿里云
    5月23日——SPA单页面应用的原理
    5月23日——谈谈对BFC规范的理解
    5月11日——IOS下如何检测用户是否安装微信
    5月10日——华为内置虚拟键问题
    移动端WEB开发,click,touch,tap事件浅析
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/12627839.html
Copyright © 2020-2023  润新知