zoukankan      html  css  js  c++  java
  • ScheduleJobFactory

    /*
     * file name:  ScheduleJobFactory.java
     * copyright:  Unis Cloud Information Technology Co., Ltd. Copyright 2015,  All rights reserved
     * description:  <description>
     * mofidy staff:  zheng
     * mofidy time:  2015年8月22日
     */
    package com.quartz;
    
    import java.util.List;
    
    import net.sf.json.JSONObject;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.quartz.CronScheduleBuilder;
    import org.quartz.CronTrigger;
    import org.quartz.Job;
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.JobKey;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    
    /**
     * To create scheduler job
     * 
     * @author xpz
     * @version [version, Jul 18, 2015]
     * @see [about class/method]
     * @since [product/module version]
     */
    public class ScheduleJobFactory {
        private static Log log = LogFactory.getLog(ScheduleJobFactory.class);
        
        /***
         * create a simpleScheduler job
         * 
         * @param scheduler: the scheduler
         * @param jobName: the job name
         * @param jobGroup: the job group
         * @param triggerName: the trigger name
         * @param triggerGroup: the trigger group
         * @param ssb: the schedBuilder (eg:SimpleScheduleBuilder ssb =
         * SimpleScheduleBuilder.simpleSchedule() .withIntervalInMinutes(1)
         * .repeatForever();)
         * @param jobClass: the class which implement
         * job/StatefulJob(@DisallowConcurrentExecution)
         * @param params [explain parameter]
         * @return void [explain return type]
         * @exception throws [exception type] [explain exception]
         * @see [class,class#method,class#member]
         */
        public static void createSimpleJob(Scheduler scheduler, String jobName,
                String jobGroup, String triggerName, String triggerGroup,
                SimpleScheduleBuilder ssb, Class<? extends Job> jobClass,
                JSONObject params) {
            // build a schedule job
            JobDetail jobDetail = JobBuilder.newJob(jobClass)
                    .withIdentity(jobName, jobGroup)
                    .build();
            // set job name
            jobDetail.getJobDataMap().put("name", jobName);
            // set job params
            if (params != null) {
                jobDetail.getJobDataMap().put("params", params);
            }
            // build a schedule simpleTrigger
            Trigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity(triggerName, triggerGroup)
                    .startNow()
                    .withSchedule(ssb)
                    .build();
            // create a new schedule job
            try {
                scheduler.scheduleJob(jobDetail, trigger);
            }
            catch (SchedulerException e) {
                log.info("error with create a simple schedule job!", e);
            }
        }
        
        /***
         * create a cronScheduler job
         * 
         * @param scheduler: the scheduler
         * @param jobName: the job name
         * @param jobGroup: the job group
         * @param triggerName: the trigger name
         * @param triggerGroup: the trigger group
         * @param cronExpression: the cron expression
         * @param jobClass: the class which implements
         * job/StatefulJob(@DisallowConcurrentExecution)
         * @param params: the param need to trransfer
         * @return void [explain return type]
         * @exception throws [exception type] [explain exception]
         * @see [class,class#method,class#member]
         */
        public static void createCronJob(Scheduler scheduler, String jobName,
                String jobGroup, String triggerName, String triggerGroup,
                String cronExpression, Class<? extends Job> jobClass,
                JSONObject params) {
            // build a schedule job
            JobDetail jobDetail = JobBuilder.newJob(jobClass)
                    .withIdentity(jobName, jobGroup)
                    .build();
            // set job name
            jobDetail.getJobDataMap().put("name", jobName);
            // set job params
            if (params != null) {
                jobDetail.getJobDataMap().put("params", params);
            }
            // build a schedule cronTrigger
            CronTrigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity(triggerName, triggerGroup)
                    .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
                    .build();
            // create a new schedule job
            try {
                scheduler.scheduleJob(jobDetail, trigger);
            }
            catch (SchedulerException e) {
                log.info("error with create a simple schedule job!", e);
            }
        }
        
        /***
         * delete job from scheduler
         * @param scheduler
         * @param job
         * @param jobGroup [explain parameter]
         * 
         * @return void [explain return type]
         * @exception throws [exception type] [explain exception]
         * @see [class,class#method,class#member]
         */
        public static void deleteJob(Scheduler scheduler, String jobName, String jobGroup){
            try {
                JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
                if(scheduler.checkExists(jobKey)){
                    scheduler.pauseJob(jobKey);
                  //Get all Triggers that are associated with the identified job
                    List<? extends Trigger>  triggers = scheduler.getTriggersOfJob(jobKey);
                    for(Trigger trigger : triggers){
                        scheduler.pauseTrigger(trigger.getKey());
                        boolean unscJobFlag = scheduler.unscheduleJob(trigger.getKey());
                        if(!unscJobFlag)
                            log.error("error with unschedule job");
                    }
                }
                
                //Interrupt all instances of the identified InterruptableJob executing in this Scheduler instance.
                if(scheduler.checkExists(jobKey)){
                    boolean interruptFlag = scheduler.interrupt(jobKey);
                    if(!interruptFlag)
                        log.error("error with interrupt the job");
                }
                
                if(scheduler.checkExists(jobKey)){
                    boolean delJobFlag = scheduler.deleteJob(jobKey);
                    if(!delJobFlag)
                        log.error("error with delete the job");
                }
            }
            catch (SchedulerException e) {
                e.printStackTrace();
            }
        } 
    }

  • 相关阅读:
    js 数据结构-栈与队列
    mysql (已解决)Access denied for user 'root'@'localhost' (using password: NO)
    mysql (已解决p)MYSQL5.7启动不了,本地计算机上的 MySQL57 服务启动后停止。
    mysql 慢查询日志,灾难日志恢复,错误日志
    php json的相关操作
    (转)LitJson 遍历key
    (转)用Eclipse进行C++开发时Bianry not found的问题解决
    (转) 在Eclipse中进行C/C++开发的配置方法(20140721最新版)
    (转)如何在eclipse的配置文件里指定jdk路径
    (转)mongodb分片
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7079375.html
Copyright © 2011-2022 走看看