代码示例
//省去controller其他代码
@Autowired
private Scheduler scheduler;
//创建多个cron触发器
@GetMapping("createCronTriggerHasRetry")
public Result<?> createCronTriggerHasRetry() {
String jobHandlerClass = "sayHelloHandler";
String name = "cron4";
String groupName = "bug4";
JobKey jobKey = new JobKey(name, groupName);
JobDetail jobDetail = JobBuilder.newJob().ofType(CronJob.class)
.withIdentity(name, groupName)
.withDescription("测试Cron触发起重复执行")
.usingJobData(JOB_DATA_KEY, "jobDataTestParam")
.usingJobData(JOB_HANDLER_CLASS_KEY, jobHandlerClass)
.build();
//每天11小时28,39分钟执行一次
String cron1 = "0 28,39 11 * * ?";
Trigger trigger1 = TriggerBuilder.newTrigger().forJob(jobDetail)
.withIdentity(name + "_trigger1", groupName)
.withSchedule(CronScheduleBuilder.cronSchedule(cron1)).build();
bindTriggerWithJobDetail(jobKey, trigger1, jobDetail);
//每天11小时31分钟执行一次
String cron2 = "0 31 11 * * ?";
Trigger trigger2 = TriggerBuilder.newTrigger().forJob(jobDetail)
.withIdentity(name + "_trigger2", groupName)
.withSchedule(CronScheduleBuilder.cronSchedule(cron2)).build();
bindTriggerWithJobDetail(jobKey, trigger2, jobDetail);
return Results.newSuccessResult("ok");
}
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.context.ApplicationContext;
@Setter
@Slf4j
public class CronJob implements Job {
private ApplicationContext applicationContext;
private String jobData;
private String jobHandlerClass;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("CronJob data: " + jobData + ", jobHandlerClass: " + jobHandlerClass);
MessageHandler messageHandler = (MessageHandler) applicationContext.getBean(jobHandlerClass);
try {
messageHandler.handlerMessage(jobData);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* 定时任务具体执行的业务逻辑.
*
* @author xx
*/
@Component
@RequiredArgsConstructor
@Slf4j
public class SayHelloHandler implements MessageHandler {
@Override
public void handlerMessage(String jobData) throws JsonProcessingException {
log.info("--SayHelloHandler:{}--", jobData);
}
}
查询生成的触发起和 Job数据
//查询生成的触发器
select * from qrtz_cron_triggers ;
//查询生成的Job
select * from qrtz_job_details;


cron表达式生成工具