spring boot整合quartz实现多个定时任务的方法
最近收到了很多封邮件,都是想知道springboot整合quartz如何实现多个定时任务的,由于本人生产上并没有使用到多个定时任务,这里给个实现的思路。
1、新建两个定时任务,如下:
publicclassScheduledJobimplementsJob{ @Override publicvoidexecute(JobExecutionContextcontext)throwsJobExecutionException{ System.out.println("schedulejob1isrunning……………………………………"); } } publicclassScheduledJob2implementsJob{ @Override publicvoidexecute(JobExecutionContextcontext)throwsJobExecutionException{ System.out.println("schedulejob2isrunning……………………………………………………"); } }
2、配置以上两个任务
@Component publicclassSchedulerAllJob{ @Autowired privateSchedulerFactoryBeanschedulerFactoryBean; /* *此处可以注入数据库操作,查询出所有的任务配置 */ /** *该方法用来启动所有的定时任务 *@throwsSchedulerException */ publicvoidscheduleJobs()throwsSchedulerException{ Schedulerscheduler=schedulerFactoryBean.getScheduler(); /** * */ scheduleJob1(scheduler); scheduleJob2(scheduler); } /** *配置Job1 *此处的任务可以配置可以放到properties或者是放到数据库中 *如果此时需要做到动态的定时任务,请参考:http://blog.csdn.net/liuchuanhong1/article/details/60873295 *博客中的ScheduleRefreshDatabase类 *@paramscheduler *@throwsSchedulerException */ privatevoidscheduleJob1(Schedulerscheduler)throwsSchedulerException{ /* *此处可以先通过任务名查询数据库,如果数据库中存在该任务,则按照ScheduleRefreshDatabase类中的方法,更新任务的配置以及触发器 *如果此时数据库中没有查询到该任务,则按照下面的步骤新建一个任务,并配置初始化的参数,并将配置存到数据库中 */ JobDetailjobDetail=JobBuilder.newJob(ScheduledJob.class).withIdentity("job1","group1").build(); //每5s执行一次 CronScheduleBuilderscheduleBuilder=CronScheduleBuilder.cronSchedule("0/5****?"); CronTriggercronTrigger=TriggerBuilder.newTrigger().withIdentity("trigger1","group1").withSchedule(scheduleBuilder).build(); scheduler.scheduleJob(jobDetail,cronTrigger); } /** *配置Job *@paramscheduler *@throwsSchedulerException */ privatevoidscheduleJob2(Schedulerscheduler)throwsSchedulerException{ JobDetailjobDetail=JobBuilder.newJob(ScheduledJob2.class).withIdentity("job2","group1").build(); CronScheduleBuilderscheduleBuilder=CronScheduleBuilder.cronSchedule("0/10****?"); //每10s执行一次 CronTriggercronTrigger=TriggerBuilder.newTrigger().withIdentity("trigger2","group1").withSchedule(scheduleBuilder).build(); scheduler.scheduleJob(jobDetail,cronTrigger); } }
3、启动两个任务
@Configuration @EnableScheduling @Component publicclassSchedulerListener{ @Autowired publicSchedulerAllJobmyScheduler; /** *启动的时候执行该方法,或者是使用ApplicationListener,在启动的时候执行该方法 *具体使用见:http://blog.csdn.net/liuchuanhong1/article/details/77568187 *@throwsSchedulerException */ @Scheduled(cron="00818?**") publicvoidschedule()throwsSchedulerException{ myScheduler.scheduleJobs(); } @Bean publicSchedulerFactoryBeanschedulerFactoryBean(){ SchedulerFactoryBeanschedulerFactoryBean=newSchedulerFactoryBean(); returnschedulerFactoryBean; } }
4、测试结果如下
schedulejob1isrunning…………………………………… schedulejob2isrunning…………………………………………………… schedulejob1isrunning…………………………………… schedulejob1isrunning…………………………………… schedulejob2isrunning…………………………………………………… schedulejob1isrunning…………………………………… schedulejob1isrunning…………………………………… schedulejob2isrunning…………………………………………………… schedulejob1isrunning……………………………………
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。