個(gè)人簡(jiǎn)介:Java領(lǐng)域新星創(chuàng)作者;阿里云技術(shù)博主、星級(jí)博主、專家博主;正在Java學(xué)習(xí)的路上摸爬滾打,記錄學(xué)習(xí)的過(guò)程~
個(gè)人主頁(yè):.29.的博客
學(xué)習(xí)社區(qū):進(jìn)去逛一逛~
# 一、SpringBoot整合定時(shí)任務(wù)技術(shù)Quartz
??Quartz應(yīng)用場(chǎng)景
Spring Boot整合Quartz的定時(shí)任務(wù)技術(shù)可以應(yīng)用于許多不同的場(chǎng)景。如:
-
定時(shí)任務(wù)調(diào)度
:Quartz提供了強(qiáng)大的定時(shí)任務(wù)調(diào)度功能,可以幫助你在指定的時(shí)間點(diǎn)或按照一定的時(shí)間間隔執(zhí)行任務(wù)。這在需要定期執(zhí)行一些后臺(tái)任務(wù)、批量數(shù)據(jù)處理、數(shù)據(jù)同步等場(chǎng)景下非常有用。 -
數(shù)據(jù)清理與歸檔
:在系統(tǒng)中,可能會(huì)生成大量的臨時(shí)性或歷史性數(shù)據(jù),使用Quartz可以定時(shí)執(zhí)行數(shù)據(jù)清理任務(wù),清除過(guò)期或不再需要的數(shù)據(jù),保持系統(tǒng)的存儲(chǔ)空間和性能。 -
緩存刷新
:當(dāng)系統(tǒng)中的一些緩存數(shù)據(jù)需要定期刷新時(shí),可以使用Quartz定時(shí)執(zhí)行任務(wù)來(lái)觸發(fā)緩存的刷新操作。這可以確保緩存數(shù)據(jù)的有效性和實(shí)時(shí)性。 -
郵件發(fā)送
:在某些場(chǎng)景下,需要定時(shí)發(fā)送郵件通知,比如每天發(fā)送一份報(bào)表、定期發(fā)送統(tǒng)計(jì)數(shù)據(jù)等。通過(guò)Quartz可以配置定時(shí)任務(wù),定時(shí)觸發(fā)郵件發(fā)送操作。 -
定時(shí)數(shù)據(jù)備份
:定時(shí)對(duì)關(guān)鍵數(shù)據(jù)進(jìn)行備份是一種常見(jiàn)的數(shù)據(jù)安全策略。使用Quartz可以定期觸發(fā)數(shù)據(jù)備份任務(wù),確保系統(tǒng)數(shù)據(jù)的安全性和可恢復(fù)性。 -
系統(tǒng)監(jiān)控與報(bào)警
:通過(guò)定時(shí)任務(wù),可以定期對(duì)系統(tǒng)狀態(tài)進(jìn)行檢查,例如CPU使用率、內(nèi)存占用、磁盤空間等,當(dāng)系統(tǒng)出現(xiàn)異常或達(dá)到閾值時(shí),可以觸發(fā)報(bào)警機(jī)制進(jìn)行預(yù)警處理。 -
定時(shí)數(shù)據(jù)分析和生成報(bào)表
:在數(shù)據(jù)分析和報(bào)表生成場(chǎng)景中,可以利用Quartz定時(shí)觸發(fā)數(shù)據(jù)分析任務(wù),生成相應(yīng)的報(bào)表和統(tǒng)計(jì)結(jié)果。
相關(guān)概念
- 工作(Job):用于定義具體執(zhí)行的工作
- 工作明細(xì)(JobDetail):用于描述定時(shí)工作相關(guān)的信息
- 觸發(fā)器(Trigger):用于描述觸發(fā)工作的規(guī)則,通常使用corn表達(dá)式定義調(diào)度規(guī)則
- 調(diào)度器(Scheduler):描述了工作明細(xì)與觸發(fā)器的對(duì)應(yīng)關(guān)系
1.導(dǎo)入Quartz相關(guān)坐標(biāo)
pom.xml文件
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
<scope>test</scope>
</dependency>
2.定義具體任務(wù)
定義具體要執(zhí)行的任務(wù),繼承QuartzJobBean抽象類
/**
* @author .29.
* @create 2023-04-03 16:09
*/
//第一步:造任務(wù)
//使用Quartz技術(shù),需要讓類繼承QuartzJobBean抽象類,實(shí)現(xiàn)其抽象方法
public class MyQuartz extends QuartzJobBean {
//此方法種指定具體功能
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println("quartz is running ...");
}
}
3. 配置類
定義工作明細(xì)與觸發(fā)器,綁定對(duì)應(yīng)關(guān)系
/**
* @author .29.
* @create 2023-04-03 16:14
*/
//第二步:設(shè)置配置類
@Configuration
public class QuartzConfig {
//工作明細(xì)(工作明細(xì)在觸發(fā)器種制定工作)
@Bean
public JobDetail printJobDetail(){
//綁定具體的工作
//調(diào)用storeDurably()持久化,再build()
return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
}
//觸發(fā)器(觸發(fā)器綁定工作明細(xì))
@Bean
public Trigger printTrigger(){
//設(shè)定觸發(fā)器 —— 參數(shù):秒 分 時(shí) 日 月 星期幾(0/5表示0秒開(kāi)始沒(méi)5秒執(zhí)行一次)
ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
//綁定對(duì)應(yīng)的工作明細(xì)
return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(scheduleBuilder).build();
}
}
4.執(zhí)行
執(zhí)行效果
Spring Boot整合Quartz的定時(shí)任務(wù)技術(shù)可以應(yīng)用于許多不同的場(chǎng)景,幫助我們實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)、數(shù)據(jù)清理、緩存刷新、郵件發(fā)送、數(shù)據(jù)備份、系統(tǒng)監(jiān)控與報(bào)警、數(shù)據(jù)分析和報(bào)表生成等功能。這些場(chǎng)景都需要定期執(zhí)行一些重復(fù)性或后臺(tái)的任務(wù),Quartz能夠提供靈活而可靠的定時(shí)任務(wù)調(diào)度功能,幫助我們簡(jiǎn)化開(kāi)發(fā)和管理。
二、SpringBoot整合定時(shí)任務(wù)技術(shù)task(簡(jiǎn)單好用)
SpringBoot啟動(dòng)類使用@EnableScheduling注解,開(kāi)啟定時(shí)任務(wù)功能
@SpringBootApplication
@EnableScheduling
public class Springboot5TaskApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot5TaskApplication.class, args);
}
}
設(shè)置定時(shí)執(zhí)行的任務(wù),并設(shè)定執(zhí)行周期
/**
* @author .29.
* @create 2023-04-03 20:41
*/
@Component
public class MyBean {
//使用 @Scheduled注解綁定執(zhí)行的任務(wù),參數(shù)以cron表達(dá)式設(shè)定執(zhí)行時(shí)間及頻率
@Scheduled(cron = "0/2 * * * * ?")
public void print(){
System.out.println("spring task is running ...");
}
}
Spring task定時(shí)任務(wù)相關(guān)配置
SpringBoot工程配置文件application.yml
:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-486644.html
spring:
task:
scheduling:
# 任務(wù)調(diào)度線程池大小:默認(rèn)為1
size: 1
# 任務(wù)線程名稱前綴 默認(rèn) scheduling-
thread-name-prefix: task_
shutdown:
# 線程池關(guān)閉時(shí)等待所有任務(wù)完成
await-termination: false
# 調(diào)度線程關(guān)閉前最大等待時(shí)間,確保最后一定關(guān)閉
await-termination-period: 10s
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-486644.html
到了這里,關(guān)于SpringBoot整合定時(shí)任務(wù)技術(shù)Quartz的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!