package org.springblade.modules.quartz.config;
|
|
import lombok.SneakyThrows;
|
import lombok.extern.slf4j.Slf4j;
|
import org.quartz.DisallowConcurrentExecution;
|
import org.quartz.Job;
|
import org.quartz.JobExecutionContext;
|
import org.springblade.modules.quartz.entity.ScheduledJob;
|
import org.springblade.modules.quartz.event.ScheduleEvent;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.ApplicationEventPublisher;
|
|
/**
|
* 该类将会被org.springframework.scheduling.quartz.SpringBeanJobFactory 实例化
|
* 并使@Autowired 生效
|
* @author zhongrj
|
* @since 2022-03-17
|
*/
|
@Slf4j
|
@DisallowConcurrentExecution
|
public class QuartzJob implements Job {
|
|
@Autowired
|
private ApplicationEventPublisher eventPublisher;
|
|
/**
|
* 任务调度参数key
|
*/
|
public static final String JOB_PARAM_KEY = "JOB_PARAM_KEY";
|
|
@Override
|
@SneakyThrows
|
public void execute(JobExecutionContext jobExecutionContext){
|
ScheduledJob scheduledCron = (ScheduledJob)jobExecutionContext.getMergedJobDataMap().get(JOB_PARAM_KEY);
|
eventPublisher.publishEvent(new ScheduleEvent(scheduledCron));
|
}
|
}
|