最近在看 springboot 的quartz 所以简单的学习一波quartz
废话不多说 上代码,
定义一个简单 类, execute方法里只是简单的写了个log
package smaug.api.quartz.testJob;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Created by naonao on 17/5/1.
*/
public class QuickJob implements Job{
protected Logger log = LoggerFactory.getLogger(this.getClass());
/**
* 实现Job类的execute
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("我是一个log...");
}
}
具体执行的时间 在本文件里定义
package smaug.api.quartz;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import smaug.api.quartz.testJob.QuickJob;
import smaug.api.quartz.testJob.SmaguScheduJob;
/**
* Created by naonao on 17/5/1.
*/
@ComponentScan
@Configuration
public class SmaugScheduler {
@Autowired
public SchedulerFactoryBean schedulerFactoryBean;
public void schedulerJobs() throws SchedulerException {
/**
* 获取schedlue 对象
*/
Scheduler scheduler = schedulerFactoryBean.getScheduler();
startTestJob(scheduler);
}
private void startTestJob(Scheduler scheduler) throws SchedulerException {
/**
* 定义一个 job 对象并绑定我们写的 QuickJob 类
* 真正执行的任务并不是Job接口的实例,而是用反射的方式实例化的一个JobDetail实例
*/
JobDetail jobDetail = JobBuilder.newJob(QuickJob.class).withIdentity("quickJpb", "group1").build();
/**
* 定义cron
*/
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
/**
* 定时器, cron表达式
*/
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").withSchedule(cronScheduleBuilder).build();
scheduler.scheduleJob(jobDetail, cronTrigger);
}
}
2017-05-07 22:49:20.007 INFO 31460 --- [ryBean_Worker-8] smaug.api.quartz.testJob.QuickJob : 我是一个log...
2017-05-07 22:49:25.006 INFO 31460 --- [ryBean_Worker-9] smaug.api.quartz.testJob.QuickJob : 我是一个log...
2017-05-07 22:49:30.006 INFO 31460 --- [yBean_Worker-10] smaug.api.quartz.testJob.QuickJob : 我是一个log...
2017-05-07 22:49:35.002 INFO 31460 --- [ryBean_Worker-1] smaug.api.quartz.testJob.QuickJob : 我是一个log...
升级一下下
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
/**
* job 的name
*/
String jobName = jobExecutionContext.getJobDetail().getKey().getName();
/**
* job的group name
*/
String groupName = jobExecutionContext.getJobDetail().getKey().getGroup();
log.info("group " + groupName +" jobName " +jobName +"just a log...");
}
即可得到
2017-05-07 23:03:05.012 INFO 31484 --- [ryBean_Worker-1] smaug.api.quartz.testJob.QuickJob : group group1 jobName quickJpbjust a log...
2017-05-07 23:03:10.001 INFO 31484 --- [ryBean_Worker-2] smaug.api.quartz.testJob.QuickJob : group group1 jobName quickJpbjust a log...
2017-05-07 23:03:15.003 INFO 31484 --- [ryBean_Worker-3] smaug.api.quartz.testJob.QuickJob : group group1 jobName quickJpbjust a log...
哈哈