转自: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;
}
}
}

最新文章

  1. 查看真机的APP沙盒文件
  2. c++内存中字节对齐问题详解
  3. Gitbook 使用入门
  4. APK downloader
  5. 重复数据插入unique列时,锁加在哪?
  6. BZOJ_1015_星球大战_[JSOI2008]_(并查集)
  7. 前端开发者应当了解的 Web 缓存知识
  8. Linux系统调用system_call
  9. 设计模式之桥接模式(Bridge)--结构模型
  10. SocketServer源码学习(二)
  11. 数据结构 - 表插入排序 具体解释 及 代码(C++)
  12. 虚拟机如何固定ip并访问外网?!
  13. centos7下安装docker(15.5容器跨主机网络--flanneld)
  14. VUE工程上线首页加载慢问题优化
  15. 梯度下降(gradient descent)算法简介
  16. 《软件调试 Windows概要》
  17. Oracle EBS INV创建保留
  18. 牛顿迭代法(Newton's Method)
  19. Winform下的语言国际化,几行代码轻松实现
  20. 如何在cmd命令行中查看、修改、删除与添加环境变量,语法格式例子:set path;echo %APPDATA%

热门文章

  1. 解决emlog默认导航不能修改的问题以及修改后台登录地址的方法
  2. php数据库批量删除
  3. 【SQL】BETWEEN操作符
  4. WEB笔记-2 剖析CSS规则
  5. JavaScript的基本语法(一)
  6. hadoop单机环境配置
  7. 三维重建面试4:Jacobian矩阵和Hessian矩阵
  8. 在jboss上部署web应用
  9. freemarker使用map替换字符串中的值demo2
  10. golang入门-defer