Springboot整合quartz實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)實(shí)例
Springboot整合quartz實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)的實(shí)現(xiàn)思路
最近收到了很多封郵件,都是想知道spring boot整合quartz如何實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)的,由于本人生產(chǎn)上并沒有使用到多個(gè)定時(shí)任務(wù),這里給個(gè)實(shí)現(xiàn)的思路。
1、新建兩個(gè)定時(shí)任務(wù),如下:
public class ScheduledJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("schedule job1 is running…………………………………… ");
}
}public class ScheduledJob2 implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("schedule job2 is running ……………………………………………………");
}
}2、配置以上兩個(gè)任務(wù)
@Component
public class SchedulerAllJob {
@Autowired
private SchedulerFactoryBean schedulerFactoryBean;
/*
* 此處可以注入數(shù)據(jù)庫操作,查詢出所有的任務(wù)配置
*/
/**
* 該方法用來啟動(dòng)所有的定時(shí)任務(wù)
* @throws SchedulerException
*/
public void scheduleJobs() throws SchedulerException {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
/**
*
*/
scheduleJob1(scheduler);
scheduleJob2(scheduler);
}
/**
* 配置Job1
* 此處的任務(wù)可以配置可以放到properties或者是放到數(shù)據(jù)庫中
* 如果此時(shí)需要做到動(dòng)態(tài)的定時(shí)任務(wù),請(qǐng)參考:http://blog.csdn.net/liuchuanhong1/article/details/60873295
* 博客中的ScheduleRefreshDatabase類
* @param scheduler
* @throws SchedulerException
*/
private void scheduleJob1(Scheduler scheduler) throws SchedulerException{
/*
* 此處可以先通過任務(wù)名查詢數(shù)據(jù)庫,如果數(shù)據(jù)庫中存在該任務(wù),則按照ScheduleRefreshDatabase類中的方法,更新任務(wù)的配置以及觸發(fā)器
* 如果此時(shí)數(shù)據(jù)庫中沒有查詢到該任務(wù),則按照下面的步驟新建一個(gè)任務(wù),并配置初始化的參數(shù),并將配置存到數(shù)據(jù)庫中
*/
JobDetail jobDetail = JobBuilder.newJob(ScheduledJob.class) .withIdentity("job1", "group1").build();
// 每5s執(zhí)行一次
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1") .withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail,cronTrigger);
}
/**
* 配置Job
* @param scheduler
* @throws SchedulerException
*/
private void scheduleJob2(Scheduler scheduler) throws SchedulerException{
JobDetail jobDetail = JobBuilder.newJob(ScheduledJob2.class) .withIdentity("job2", "group1").build();
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/10 * * * * ?");
// 每10s執(zhí)行一次
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger2", "group1") .withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail,cronTrigger);
}
}3、啟動(dòng)兩個(gè)任務(wù)
@Configuration
@EnableScheduling
@Component
public class SchedulerListener {
@Autowired
public SchedulerAllJob myScheduler;
/**
* 啟動(dòng)的時(shí)候執(zhí)行該方法,或者是使用ApplicationListener,在啟動(dòng)的時(shí)候執(zhí)行該方法
* 具體使用見:http://blog.csdn.net/liuchuanhong1/article/details/77568187
* @throws SchedulerException
*/
@Scheduled(cron="0 08 18 ? * *")
public void schedule() throws SchedulerException {
myScheduler.scheduleJobs();
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean(){
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
return schedulerFactoryBean;
}
}4、測試結(jié)果如下
schedule job1 is running……………………………………
schedule job2 is running ……………………………………………………
schedule job1 is running……………………………………
schedule job1 is running……………………………………
schedule job2 is running ……………………………………………………
schedule job1 is running……………………………………
schedule job1 is running……………………………………
schedule job2 is running ……………………………………………………
schedule job1 is running……………………………………
到此這篇關(guān)于Springboot整合quartz實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)的實(shí)現(xiàn)思路的文章就介紹到這了,更多相關(guān)Springboot整合quartz內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何對(duì)quartz定時(shí)任務(wù)設(shè)置結(jié)束時(shí)間
- SpringBoot中使用Quartz設(shè)置定時(shí)任務(wù)的實(shí)例詳解
- Springboot集成Quartz實(shí)現(xiàn)定時(shí)任務(wù)代碼實(shí)例
- SpringBoot集成quartz實(shí)現(xiàn)定時(shí)任務(wù)
- SpringBoot+Quartz實(shí)現(xiàn)定時(shí)任務(wù)的代碼模版分享
- Quartz定時(shí)任務(wù)管理方式(動(dòng)態(tài)添加、停止、恢復(fù)、刪除定時(shí)任務(wù))
相關(guān)文章
Spring Boot學(xué)習(xí)入門之表單驗(yàn)證
表單驗(yàn)證主要是用來防范小白搞亂網(wǎng)站和一些低級(jí)的黑客技術(shù)。Spring Boot可以使用注解 @Valid 進(jìn)行表單驗(yàn)證。下面這篇文章主要給大家介紹了關(guān)于Spring Boot學(xué)習(xí)入門之表單驗(yàn)證的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
SpringCloud整合MQ實(shí)現(xiàn)消息總線服務(wù)方式
這篇文章主要介紹了SpringCloud整合MQ實(shí)現(xiàn)消息總線服務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
Java使用新浪微博API通過賬號(hào)密碼方式登陸微博的實(shí)例
這篇文章主要介紹了Java使用新浪微博API通過賬號(hào)密碼方式登陸微博的實(shí)例,一般來說第三方App都是采用OAuth授權(quán)認(rèn)證然后跳轉(zhuǎn)之類的方法,而本文所介紹的賬號(hào)方式則更具有自由度,需要的朋友可以參考下2016-02-02
Java根據(jù)模板實(shí)現(xiàn)excel導(dǎo)出標(biāo)準(zhǔn)化
這篇文章主要為大家詳細(xì)介紹了Java如何根據(jù)模板實(shí)現(xiàn)excel導(dǎo)出標(biāo)準(zhǔn)化,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-03-03
Java 圖片復(fù)制功能實(shí)現(xiàn)過程解析
這篇文章主要介紹了Java 圖片復(fù)制功能實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
idea-java序列化serialversionUID自動(dòng)生成方式
Java的Serializable接口用于實(shí)現(xiàn)對(duì)象的序列化和反序列化,通過將對(duì)象轉(zhuǎn)換為字節(jié)流來存儲(chǔ)或傳輸,實(shí)現(xiàn)Serializable接口的類需要定義serialVersionUID以保證序列化和反序列化過程的兼容性,IDEA提供了便捷的配置和快捷鍵來生成serialVersionUID2025-11-11
vue?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證的方案
使用?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證非常簡單,實(shí)現(xiàn)在線實(shí)時(shí)編輯的記賬憑證、自動(dòng)合計(jì)金額等,這篇文章主要介紹了vue?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證的方案,需要的朋友可以參考下2024-12-12

