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());
        }
    
    
    
    }
    

      

  • 相关阅读:
    Educational Codeforces Round 20 D. Magazine Ad
    Educational Codeforces Round 20 C. Maximal GCD
    紫书第三章训练2 暴力集
    Educational Codeforces Round 20 B. Distances to Zero
    Educational Codeforces Round 20 A. Maximal Binary Matrix
    紫书第三章训练1 D
    紫书第一章训练1 D -Message Decoding
    HAZU校赛 Problem K: Deadline
    Mutual Training for Wannafly Union #8 D
    紫书第三章训练1 E
  • 原文地址:https://www.cnblogs.com/mlfz/p/10595599.html
Copyright © 2011-2022 走看看