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