zoukankan      html  css  js  c++  java
  • Quartz实例:quartz定时任务代码示例

    转自:http://www.blogchong.com/post/96.html

    quartz定时任务调度框架,使用实例。

    Job类://即实际调度任务实现

    package net.csdn.edm.util.quartz;
     
    import java.util.HashMap;
    import java.util.Map;
    import net.csdn.common.logging.CSLogger;
    import net.csdn.common.logging.Loggers;
    import org.quartz.Job;
    import org.quartz.JobDataMap;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
     
    /**
     * @author:blogchong
     * @Version:1.0
     * @CreateTime:2014年12月30日 下午3:27:02
     * @Description:定时进度job
     */
     
    public class QuartzJob implements Job {
     
        protected CSLogger logger = Loggers.getLogger(QuartzJob.class);
     
        @SuppressWarnings("static-access")
        public void execute(JobExecutionContext arg0) throws JobExecutionException {
     
            // 接收参数
            JobDataMap jobDataMap = arg0.getJobDetail().getJobDataMap();
             
            //通过这种方式,传递参数
            String taskId = jobDataMap.getString("taskId");
             
            //具体的定时任务实现,在这里实现即可
                    //具体实现略过
        }
    }

    添加Job类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    package net.csdn.edm.util.quartz;
    import net.csdn.common.logging.CSLogger;
    import net.csdn.common.logging.Loggers;
    import net.csdn.edm.util.MacroDef;
    import org.quartz.CronScheduleBuilder;
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    /**
     * @author:blogchong
     * @Version:1.0
     * @CreateTime:2014年12月30日 下午3:28:32
     * @Description:添加job接口
     */
    public class QuartzAdd {
    public static SchedulerFactory schedFact = new StdSchedulerFactory();
    protected static CSLogger logger = Loggers.getLogger(QuartzAdd.class);
    public static Scheduler sched;
    public static void startSched() throws SchedulerException {
    try {
    QuartzAdd.sched = QuartzAdd.schedFact.getScheduler();
    QuartzAdd.sched.start();
    catch (Exception e) {
    e.printStackTrace();
    }
    }
    public static boolean quartzAdd(String type, String taskId) throws Exception {
    try {
    // 若sched未赋值或者未启动,则先在全局中启动它
    if (QuartzAdd.sched == null || !QuartzAdd.sched.isStarted()) {
    QuartzAdd.startSched();
    }
    //定时规则,跟普通crontable的差不多
    String rule = "0 0/" + MacroDef.QUARTZ_INTERVAL + " * * * ?";
    //设置组名,和任务名
    String quartz_name = taskId;
    String quartz_group = type;
    // 创建jobDetail实例,指定job名以及所属组
    JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class)
    .withIdentity(quartz_name, quartz_group).build();
    jobDetail.getJobDataMap().put("taskId", taskId);
    Trigger trigger = TriggerBuilder
    .newTrigger()
    .withIdentity(quartz_name, quartz_group)
    .withSchedule(
    CronScheduleBuilder.cronSchedule(rule))
    .startNow().build();
    QuartzAdd.sched.scheduleJob(jobDetail, trigger);
    logger.info("[已添加定时获取进度任务, taskID:" + taskId + ", type:" + type + "]");
    return true;
    catch (Exception e) {
    logger.error("[添加定时任务出错,任务号:" + taskId + "]");
    logger.error(e.toString());
    return false;
    }
    }
    }
  • 相关阅读:
    【2020-05-03】发掘自己内心那个原点的力量
    【2020-05-02】要适应不确定性
    【2020-05-01】人生十三信条
    【一句日历】2020年5月
    【2020-04-30】每一句话,都是自我学习
    【2020-04-29】勤奋是一种享受
    【2020-04-28】自我观念强化的实践
    【2020-04-27】自我提升的里程碑
    【2020-04-26】还在温室里的自己
    家谱树(信息学奥赛一本通 1351)
  • 原文地址:https://www.cnblogs.com/sharpest/p/8571890.html
Copyright © 2011-2022 走看看