Quartz是一個完全由java編寫的開源作業調度框架,他使用非常簡單。本章主要講解 Quartz在Spring Boot 中的使用。
- 快速集成 Quartz
- 介紹 Quartz 幾個主要技術點
- Quartz 在 Spring Boot 的配置
- Quartz 在 Spring Boot 中整合 Mybatis
本着一篇文章一個示例的原則,2、3、4 將在下一章節說明
1 新建 Spring Boot Maven 示例工程項目
注意:是用來 IDEA 開發工具
- File > New > Project,如下圖選擇
Spring Initializr然后點擊 【Next】下一步 - 填寫
GroupId(包名)、Artifact(項目名) 即可。點擊 下一步
groupId=com.fishpro
artifactId=quartz - 選擇依賴
Spring Web Starter前面打鈎。 - 項目名設置為
spring-boot-study-quartz.
2 依賴引入 Pom
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3 使用 Quartz
3.1 在啟動文件中編寫一個簡單的使用
QuartzApplication 中直接編寫一啟動關閉類代碼
@SpringBootApplication
public class QuartzApplication {
public static void main(String[] args) {
SpringApplication.run(QuartzApplication.class, args);
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//啟動
scheduler.start();
//關閉
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
運行在控制台觀察結果
2019-08-08 15:09:01.313 INFO 21565 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2019-08-08 15:09:01.313 INFO 21565 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.1
2019-08-08 15:09:01.314 INFO 21565 --- [ main] org.quartz.core.QuartzScheduler : Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
2019-08-08 15:09:01.314 INFO 21565 --- [ main] org.quartz.core.QuartzScheduler : Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
2019-08-08 15:09:01.314 INFO 21565 --- [ main] org.quartz.core.QuartzScheduler : Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
2019-08-08 15:09:01.314 INFO 21565 --- [ main] org.quartz.core.QuartzScheduler : Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
3.2 使用 Job 和 Trigger
- 新建一個 Job 類 WelcomeJob
- 在啟動類中調用他
WelcomeJob (路徑 src/main/java/com/fishpro/quartz/job/WelcomeJob.java)
public class WelcomeJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("這是一個quartz 任務");
}
}
QuartzApplication (路徑 src/main/java/com/fishpro/quartz/QuartzApplication.java)
@SpringBootApplication
public class QuartzApplication {
public static void main(String[] args) {
SpringApplication.run(QuartzApplication.class, args);
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//啟動
scheduler.start();
//新建一個 Job WelcomeJob
JobDetail job = JobBuilder.newJob(WelcomeJob.class)
.withIdentity("mySimpleJob", "simpleGroup")
.build();
// 觸發器 定義多長時間觸發 JobDetail
Trigger trigger = org.quartz.TriggerBuilder.newTrigger()
.withIdentity("simpleTrigger", "simpleGroup")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
scheduler.scheduleJob(job,trigger);
//關閉
//scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
運行結果
2019-08-08 16:46:36.599 INFO 21695 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2019-08-08 16:46:36.599 INFO 21695 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.1
2019-08-08 16:46:36.599 INFO 21695 --- [ main] org.quartz.core.QuartzScheduler : Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
這是一個quartz 任務
這是一個quartz 任務
這是一個quartz 任務
這是一個quartz 任務
這是一個quartz 任務
這是一個quartz 任務
這是一個quartz 任務
這是一個quartz 任務
這是一個quartz 任務
如果您覺得本系列示例對您有幫助,請點擊右上角按鈕 watch 以示支持謝謝
參考
