管理Quarz的工具類,QuarzManager

jopen 11年前發布 | 18K 次閱讀 Quartz 作業調度框架 QuarzManager

package com.test.quarz;

import java.text.ParseException;

import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory;

public class QuarzManager {

private static SchedulerFactory sf = new StdSchedulerFactory();

private static String JOB_GROUP_NAME = "jobGroup1";

private static String TRIGGER_GROUP_NAME = "triggerGroup1";


 /** *//** 
    * 添加一個定時任務,使用默認的任務組名,觸發器名,觸發器組名 
    * @param jobName 任務名 
    * @param job     任務 
    * @param time    時間設置,參考quartz說明文檔 
    * @throws SchedulerException 
    * @throws ParseException 
    */  
   public static void addJob(String jobName,Job job,String time)   
                               throws SchedulerException, ParseException{  
       Scheduler sched = sf.getScheduler();  
       JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任務名,任務組,任務執行類  
       //觸發器  
       CronTrigger trigger =   
            new CronTrigger(jobName, TRIGGER_GROUP_NAME);//觸發器名,觸發器組  
       trigger.setCronExpression(time);//觸發器時間設定  
       sched.scheduleJob(jobDetail,trigger);  
       //啟動  
       if(!sched.isShutdown())  
          sched.start();  
   }  

   /** *//** 
    * 添加一個定時任務 
    * @param jobName 任務名 
    * @param jobGroupName 任務組名 
    * @param triggerName 觸發器名 
    * @param triggerGroupName 觸發器組名 
    * @param job     任務 
    * @param time    時間設置,參考quartz說明文檔 
    * @throws SchedulerException 
    * @throws ParseException 
    */  
   public static void addJob(String jobName,String jobGroupName,  
                             String triggerName,String triggerGroupName,  
                             Job job,String time)   
                               throws SchedulerException, ParseException{  
       Scheduler sched = sf.getScheduler();  
       JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任務名,任務組,任務執行類  
       //觸發器  
       CronTrigger trigger =   
            new CronTrigger(triggerName, triggerGroupName);//觸發器名,觸發器組  
       trigger.setCronExpression(time);//觸發器時間設定  
       sched.scheduleJob(jobDetail,trigger);  
       if(!sched.isShutdown())  
          sched.start();  
   }  

   /** *//** 
    * 修改一個任務的觸發時間(使用默認的任務組名,觸發器名,觸發器組名) 
    * @param jobName 
    * @param time 
    * @throws SchedulerException
    * @throws ParseException 
    */  
   public static void modifyJobTime(String jobName,String time)   
                                  throws SchedulerException, ParseException{  
       Scheduler sched = sf.getScheduler();  
       Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME);  
       if(trigger != null){  
           CronTrigger ct = (CronTrigger)trigger;  
           ct.setCronExpression(time);  
           sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);  
       }  
   }  

   /** *//** 
    * 修改一個任務的觸發時間 
    * @param triggerName 
    * @param triggerGroupName 
    * @param time 
    * @throws SchedulerException 
    * @throws ParseException 
    */  
   public static void modifyJobTime(String triggerName,String triggerGroupName,  
                                    String time)   
                                  throws SchedulerException, ParseException{  
       Scheduler sched = sf.getScheduler();  
       Trigger trigger = sched.getTrigger(triggerName,triggerGroupName);  
       if(trigger != null){  
           CronTrigger ct = (CronTrigger)trigger;  
           //修改時間  
           ct.setCronExpression(time);  
           //重啟觸發器  
           sched.resumeTrigger(triggerName,triggerGroupName);  
       }  
   }  

   /** *//** 
    * 移除一個任務(使用默認的任務組名,觸發器名,觸發器組名) 
    * @param jobName 
    * @throws SchedulerException 
    */  
   public static void removeJob(String jobName)   
                               throws SchedulerException{  
       Scheduler sched = sf.getScheduler();  
       sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止觸發器  
       sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除觸發器  
       sched.deleteJob(jobName,JOB_GROUP_NAME);//刪除任務  
   }  

   /** *//** 
    * 移除一個任務 
    * @param jobName 
    * @param jobGroupName 
    * @param triggerName 
    * @param triggerGroupName 
    * @throws SchedulerException 
    */  
   public static void removeJob(String jobName,String jobGroupName,  
                                String triggerName,String triggerGroupName)   
                               throws SchedulerException{  
       Scheduler sched = sf.getScheduler();  
       sched.pauseTrigger(triggerName,triggerGroupName);//停止觸發器  
       sched.unscheduleJob(triggerName,triggerGroupName);//移除觸發器  
       sched.deleteJob(jobName,jobGroupName);//刪除任務  
   }  


}</pre>

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