zoukankan      html  css  js  c++  java
  • Quartz的自定义插件

    quartz本身插件:

    LoggingJobHistoryPlugin,LoggingTriggerHistoryPlugin分别可以打印scheduler容器管理的所有triggers和jobDetails的运行日志。 插件XMLSchedulingDataProcessorPlugin

    支持使用xml方式管理trigger&job任务(不同于spring对quartz的封装,但很类似), 一个是支持scheduler的管理的插件。JobInterruptMonitorPlugin监控job执行假死插件(执行时间过长)。ShutdownHookPlugin 捕获JVM终止的事件,并在调度程序上调用shutdown

    我们可以自定义插件

    public class QuartzPlugins implements SchedulerPlugin, JobListener {
    
        private String name;
    
        private Scheduler scheduler;
    
        @Override
        public void initialize(String s, Scheduler scheduler, ClassLoadHelper classLoadHelper) throws SchedulerException {
           this.name = s;
           this.scheduler = scheduler;
           log.info("--------------------初始化自定义插件 {}-----------------", name);
           scheduler.getListenerManager().addJobListener(this, EverythingMatcher.allJobs());
        }
    
        @Override
        public void start() {
            log.info("--------------------启动自定义插件 {}-----------------", name);
        }
    
        @Override
        public void shutdown() {
            log.info("--------------------关闭自定义插件 {}-----------------", name);
        }
    
        /**
         * 方法返回一个字符串用以说明 JobListener 的名称
         */
        @Override
        public String getName() {
            return "spz-spz";
        }
    
        /**
         * Scheduler 在 JobDetail 将要被执行时调用这个方法
         */
        @Override
        public void jobToBeExecuted(JobExecutionContext jobExecutionContext) {
            log.info("[自定义插件] 被执行时 " + jobExecutionContext.getJobRunTime());
        }
    
        /**
         * Scheduler 在 JobDetail 即将被执行,但又被 TriggerListener 否决了时调用这个方法。
         */
        @Override
        public void jobExecutionVetoed(JobExecutionContext jobExecutionContext) {
            log.info("[自定义插件] 即将被执行" + jobExecutionContext.getJobRunTime());
        }
    
        /**
         * Scheduler 在 JobDetail 被执行完毕
         */
        @Override
        public void jobWasExecuted(JobExecutionContext jobExecutionContext, JobExecutionException e) {
            log.info("[自定义插件] JobListener 执行之后" + jobExecutionContext.getJobRunTime());
        }
    
    
    
    }
    

      

  • 相关阅读:
    RQNOJ 117 最佳课题选择:多重背包
    RQNOJ 95 多多看DVD(加强版):01背包
    RQNOJ 624 运动鞋:dp
    RQNOJ 622 最小重量机器设计问题:dp
    bzoj 3262 陌上花开
    bzoj 3224 Tyvj 1728 普通平衡树
    bzoj 4196 软件包管理器
    luogu 3953 逛公园
    bzoj 2157 旅行
    luogu 3384 【模板】树链剖分
  • 原文地址:https://www.cnblogs.com/mlfz/p/10595599.html
Copyright © 2011-2022 走看看