Quartz2.x增、刪、改工具類

jopen 9年前發布 | 2K 次閱讀 Java Quartz

package com.a2563;

import static org.quartz.CronScheduleBuilder.cronSchedule; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger;

import org.apache.logging.log4j.Logger; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; /**

  • 類名:QuartzManager <br/>
  • 功能:<br/>
  • 詳細:Quartz增、刪、改工具類 <br/>
  • 作者: Tliu <br/>
  • 日期:2015-7-17 <br/> */ public class QuartzUtils {

    private Logger log = null;

    private Scheduler scheduler = null;

    public static final String DATA_KEY = "STATE_DATA";

    public QuartzUtils (){

     try {
         log = org.apache.logging.log4j.LogManager.getLogger();
         scheduler = new StdSchedulerFactory().getScheduler();
         log.info("初始化調度器 ");
     } catch (SchedulerException ex) {
         log.error("初始化調度器=> [失敗]:" + ex.getLocalizedMessage());
     }
    

    }
    public void addJob(String name, String group, Class<? extends Job> clazz,String cronExpression) {

     try {      
         //構造任務
         JobDetail job = newJob(clazz)
                 .withIdentity(name, group)                 
                 .build();
    
         //構造任務觸發器
         Trigger trg = newTrigger()
                 .withIdentity(name, group)
                 .withSchedule(cronSchedule(cronExpression))
                 .build();       
    
         //將作業添加到調度器
         scheduler.scheduleJob(job, trg);
         log.info("創建作業=> [作業名稱:" + name + " 作業組:" + group + "] ");
     } catch (SchedulerException e) {
         e.printStackTrace();
         log.error("創建作業=> [作業名稱:" + name + " 作業組:" + group + "]=> [失敗]");
     }
    

    }

    public void removeJob(String name, String group){

     try {
         TriggerKey tk = TriggerKey.triggerKey(name, group);
         scheduler.pauseTrigger(tk);//停止觸發器  
         scheduler.unscheduleJob(tk);//移除觸發器
         JobKey jobKey = JobKey.jobKey(name, group);
         scheduler.deleteJob(jobKey);//刪除作業
         log.info("刪除作業=> [作業名稱:" + name + " 作業組:" + group + "] ");
     } catch (SchedulerException e) {
         e.printStackTrace();
         log.error("刪除作業=> [作業名稱:" + name + " 作業組:" + group + "]=> [失敗]");
     }
    

    }

    public void pauseJob(String name, String group){

     try {
         JobKey jobKey = JobKey.jobKey(name, group);
         scheduler.pauseJob(jobKey);
         log.info("暫停作業=> [作業名稱:" + name + " 作業組:" + group + "] ");
     } catch (SchedulerException e) {
         e.printStackTrace();
         log.error("暫停作業=> [作業名稱:" + name + " 作業組:" + group + "]=> [失敗]");
     }
    

    }

    public void resumeJob(String name, String group){

     try {
         JobKey jobKey = JobKey.jobKey(name, group);         
         scheduler.resumeJob(jobKey);
         log.info("恢復作業=> [作業名稱:" + name + " 作業組:" + group + "] ");
     } catch (SchedulerException e) {
         e.printStackTrace();
         log.error("恢復作業=> [作業名稱:" + name + " 作業組:" + group + "]=> [失敗]");
     }       
    

    }

    public void modifyTime(String name, String group, String cronExpression){

     try {
         TriggerKey tk = TriggerKey.triggerKey(name, group);
         //構造任務觸發器
         Trigger trg = newTrigger()
                 .withIdentity(name, group)
                 .withSchedule(cronSchedule(cronExpression))
                 .build();       
         scheduler.rescheduleJob(tk, trg);
         log.info("修改作業觸發時間=> [作業名稱:" + name + " 作業組:" + group + "] ");
     } catch (SchedulerException e) {
         e.printStackTrace();
         log.error("修改作業觸發時間=> [作業名稱:" + name + " 作業組:" + group + "]=> [失敗]");
     }
    

    }

    public void start() {

     try {
         scheduler.start();
         log.info("啟動調度器 ");
     } catch (SchedulerException e) {
         e.printStackTrace();
         log.error("啟動調度器=> [失敗]");
     }
    

    }

    public void shutdown() {

     try {
         scheduler.shutdown();
         log.info("停止調度器 ");
     } catch (SchedulerException e) {
         e.printStackTrace();
         log.error("停止調度器=> [失敗]");
     }
    

    } }</pre> 來自:http://my.oschina.net/u/1859292/blog/504225

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!