springboot整合quartz定时调度

pom依赖

<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>

我的boot版本是1.5.9

编写quartz工具类

public class SchedulerUtil {
private static Scheduler scheduler;
public static synchronized Scheduler getScheduler() throws SchedulerException {
		if (scheduler==null) {
			SchedulerFactory sf = new StdSchedulerFactory();
			scheduler = sf.getScheduler();
		}
		return scheduler;
	}
	/**
	 * 创建指定日期参数的定时任务
	 * @param jobName
	 * @param jobImpl
	 * @return
	 */
	public static String createJob(String jobName, String cronExpression, Class<? extends Job> jobImpl){
		String errorMsg = "";
		//检查传入参数是否合法
		if(StringUtils.isBlank(jobName)){
			errorMsg = "传入任务名称为空,创建任务失败";
			log.warn(errorMsg);
			return errorMsg;
		}
		if(cronExpression == null){
			errorMsg = "传入的时间参数为空,创建任务失败";
			log.warn(errorMsg);
			return errorMsg;
		}
		
		//获取quartz的任务调度器
		try {
			Scheduler tmpScheduler = getScheduler();
			//创建quart的任务信息对象
			JobDetail myJob = newJob(jobImpl).withIdentity(jobName, jobName + "Group").build();
			//设置触发器
			Trigger trigger = createCronTrigger(cronExpression, jobName, jobName + "TriggerGroup");
			Date startDate = tmpScheduler.scheduleJob(myJob, trigger);
			log.info("任务[" + jobName + "]创建成功,任务定时时间: " + startDate);
			startScheduler();
		} catch (SchedulerException e) {
			log.error("获取任务调度器失败: ", e);
			return "获取任务调度器失败";
		} catch (ParseException e) {
			log.error("解析任务时间参数失败: ", e);
			return "解析任务时间参数失败";
		}
		return null;
	}
	
	public static Trigger createCronTrigger(String cronExpression, String triggerName,
                                            String triggerGroup) throws ParseException {
		return TriggerBuilder.newTrigger().withIdentity(triggerName,
				triggerGroup).withSchedule(
				CronScheduleBuilder.cronSchedule(cronExpression)).build();
	}
	public static void addJob(JobDetail jobDetail, Trigger trigger) throws SchedulerException {
		scheduler.scheduleJob(jobDetail, trigger);
	}
	
	/**
	 * 启动默认的调度管理器
	 * @throws SchedulerException
	 */
	public static synchronized void startScheduler() throws SchedulerException {
		if (!scheduler.isStarted()) {
			scheduler.start();
		}
	}
}

创建springboot启动加载类

@Component
@Order(value = 2)
public class ChandaoBugRunner implements ApplicationRunner {
    private static Log logger = LogFactory.getLog(ChandaoBugRunner.class);


    @Override
    public void run(ApplicationArguments args) throws Exception {
        SchedulerUtil.createJob("任务名称","定时时间参数","定时任务类");
       //SchedulerUtil.createJob("闹钟定时","cron表达式",checkJob.class);
        logger.info("加载任务完成");
    }
}

创建定时任务

public class checkJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("启动定时任务");
        //你需要定时启动的方法。
    }
}

启动springboot启动类

在这里插入图片描述启动成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值