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 ;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值