近期,项目需要,为了实现动态添加job任务,引入quartz框架,于是开始研究quartz框架,参考文章:http://snailxr.iteye.com/blog/2076903
文章中大部分内容涉及的是有cron表达式的触发器任务,如果需要立即执行的任务,
java代码如下:
public void runAJob(DataObject dataObject) throws SchedulerException {
JobDetail jobDetail = JobBuilder.newJob(DataQuartzFactory.class)
.withIdentity(dataObject.getJobId(), dataObject.getUserId()).storeDurably().build();
jobDetail.getJobDataMap().put("key", dataObject);
scheduler.addJob(jobDetail, true);
JobKey jobKey = JobKey.jobKey(dataObject.getJobId(), dataObject.getUserId());
scheduler.triggerJob(jobKey);
scheduler.start();
}
jobdatamap中的key可以指定一个任意常量变量,dataObject即为任务类,保存了任务的所有信息,如jobid,userid等等信息,任务类可从数据库中取出,也可从队列中取出,取任务类方式自由制定。其中有一个细节问题是scheduler的注入,