quartz调用问题
想问下怎么使用quartz定时多次调用,例如10分钟一次。每次执行同一作业10次。每次进行动态的job参数传递。请大神们给个demo
------解决方案--------------------
包括两个java文件:TestQuartz .java和TestJob.java。
测试用的Quartz包是quartz-all-1.6.4.jar。
TestQuartz .java的源代码
package test;
import
java.text.ParseException;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class TestQuartz {
/**
* @param args
* @throws SchedulerException
* @throws
ParseException */
public static void main(String[] args) throws SchedulerException, ParseException {
SchedulerFactory schedfact=new StdSchedulerFactory();
Scheduler sched=schedfact.getScheduler();
JobDetail jd;
String cron="0/5 * * * * ?";//0秒开始,每5秒重复一次
String datatype="this is a test.";
jd = new JobDetail();
jd.setJobClass(TestJob.class);//执行任务的类
jd.setName(datatype);//任务名
jd.setGroup("ftp_job_grp");//任务组名
jd.setRequestsRecovery(true);
jd.getJobDataMap().put("params", datatype);//要传递的参数,任务启动时可以取得
CronTrigger ctrg=new CronTrigger();
ctrg.setCronExpression(cron);//时间表达式
ctrg.setName("trg_ftp");//触发器名
ctrg.setGroup("ftp_trg_grp");//触发器组名
ctrg.setStartTime(new Date());//触发器启动时间
sched.scheduleJob(jd,ctrg);
sched.start();//启动定时调度计划
}
}
-----------------------------
TestJob.java文件的源代码:
package test;
import java.util.Date;
import org.quartz.*;
public class TestJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
JobDataMap map= arg0.getJobDetail().getJobDataMap();//取参数
System.out.println(new Date().toString() +" this is test job.execute()");
if(map!=null && map.size()>0)
{
String[] keys=map.getKeys();//取所有键名
for(String key:keys)
{
System.out.println(key+"="+map.getString(key));
}
}
}
}