700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > spring-boot-starter-quartz 添加定时任务立即执行一次的问题解决

spring-boot-starter-quartz 添加定时任务立即执行一次的问题解决

时间:2020-11-20 06:19:38

相关推荐

spring-boot-starter-quartz 添加定时任务立即执行一次的问题解决

scheduleBuilder.withMisfireHandlingInstructionDoNothing();

定时任务不触发立即执行,等待下次Cron触发频率到达时刻开始按照Cron频率依次执行

扩展:

scheduleBuilder.withMisfireHandlingInstructionDoNothing();不触发立即执行,等待下次Cron触发频率到达时刻开始按照Cron频率依次执行scheduleBuilder.withMisfireHandlingInstructionFireAndProceed();以当前时间为触发频率立刻触发一次执行,然后按照Cron频率依次执行scheduleBuilder.withMisfireHandlingInstructionIgnoreMisfires();以错过的第一个频率时间立刻开始执行,重做错过的所有频率周期后,当下一次触发频率发生时间大于当前时间后,再按照正常的Cron频率依次执行

示例:val trigger = newTrigger().withSchedule(cronSchedule("0 0 9-17 ? * MON-FRI").withMisfireHandlingInstructionFireAndProceed() //or other).build()

In this example the trigger should fire every hour between 9 AM and 5 PM, from Monday to Friday. But once again first two invocations were missed (so the trigger misfired) and this situation was discovered at 10:15 AM. Note that available misfire instructions are different compared to simple triggers:

代码如下:

public void addJob(TaskConfBO bo) throws Exception {//获去调度器实例Scheduler scheduler = schedulerFactoryBean.getScheduler();//新增定时任务// 构建job信息JobDetail jobDetail = JobBuilder.newJob(DataAnalysisJob.class).withIdentity(bo.getId(), bo.getOrgId()).build();JobDataMap jobDataMap = jobDetail.getJobDataMap();jobDataMap.put("id", bo.getId());// 表达式调度构建器(即任务执行的时间)CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(bo.getCron());//定时任务不触发立即执行,等待下次Cron触发频率到达时刻开始按照Cron频率依次执行scheduleBuilder.withMisfireHandlingInstructionDoNothing();// 按新的cronExpression表达式构建一个新的triggerTriggerBuilder<CronTrigger> triggerBuilder =TriggerBuilder.newTrigger().withIdentity(bo.getId(), bo.getOrgId()).withSchedule(scheduleBuilder);// 默认立即执行if (bo.getStartTime() != null) {// 指定时间执行triggerBuilder.startAt(bo.getStartTime());}if (bo.getEndTime() != null) {// 指定时间结束triggerBuilder.endAt(bo.getEndTime());}CronTrigger trigger = triggerBuilder.build();//设置job执行scheduler.scheduleJob(jobDetail, trigger);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。