普通web整合quartz跑定時(shí)任務(wù)的示例_第1頁
普通web整合quartz跑定時(shí)任務(wù)的示例_第2頁
普通web整合quartz跑定時(shí)任務(wù)的示例_第3頁
普通web整合quartz跑定時(shí)任務(wù)的示例_第4頁
普通web整合quartz跑定時(shí)任務(wù)的示例_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第普通web整合quartz跑定時(shí)任務(wù)的示例目錄一.場(chǎng)景(什么時(shí)候用到定時(shí)任務(wù))二.目前都有哪些工具可以定時(shí)處理數(shù)據(jù)三.如何集成1.jar包下載2.理解幾個(gè)核心概念四.配置示例五.在線cron表達(dá)式

一.場(chǎng)景(什么時(shí)候用到定時(shí)任務(wù))

文件跑批,定時(shí)處理數(shù)據(jù),和業(yè)務(wù)解耦的場(chǎng)景

二.目前都有哪些工具可以定時(shí)處理數(shù)據(jù)

1.jdk的timertask:數(shù)據(jù)量小的情況下,單線程的

2.kettle:比較適合邏輯不復(fù)雜的數(shù)據(jù)推送

3.quartz:數(shù)據(jù)量大的情況下,分布式下的定時(shí)任務(wù)處理

三.如何集成

1.jar包下載

地址:/softs/539791.html

2.理解幾個(gè)核心概念

scheduler任務(wù)調(diào)度、Job任務(wù)、Trigger觸發(fā)器、JobDetail任務(wù)細(xì)節(jié)

Job任務(wù):

其實(shí)Job是接口,其中只有一個(gè)execute方法:

packageorg.quartz;

publicabstractinterfaceJob

publicabstractvoidexecute(JobExecutionContextparamJobExecutionContext)throwsJobExecutionException;

}

我們開發(fā)者只要實(shí)現(xiàn)此接口,實(shí)現(xiàn)execute方法即可。把我們想做的事情,在execute中執(zhí)行即可。

JobDetail:

任務(wù)細(xì)節(jié),Quartz執(zhí)行Job時(shí),需要新建個(gè)Job實(shí)例,但是不能直接操作Job類,所以通過JobDetail來獲取Job的名稱、描述信息。

Trigger觸發(fā)器:

執(zhí)行任務(wù)的規(guī)則;比如每天,每小時(shí)等。

一般情況使用SimpleTrigger,和CronTrigger,這個(gè)觸發(fā)器實(shí)現(xiàn)了Trigger接口。

對(duì)于復(fù)雜的時(shí)間表達(dá)式來說,比如每個(gè)月15日上午幾點(diǎn)幾分,使用CronTrigger

對(duì)于簡(jiǎn)單的時(shí)間來說,比如每天執(zhí)行幾次,使用SimpleTrigger

scheduler任務(wù)調(diào)度:

最核心的概念,需要把JobDetail和Trigger注冊(cè)到scheduler中,才可以執(zhí)行。

四.配置示例

1.模擬新建一個(gè)工作

packagetcc.test.quartz;

importcom.util.RowList;

importjos.engine.core.jdbc.JdbcTemplate;

importorg.quartz.Job;

importorg.quartz.JobExecutionContext;

importorg.quartz.JobExecutionException;

importjava.util.Date;

*Copyright(C)@2025

*@author:tcc

*@version:1.0

*@date:2025/3/7

*@time:18:20

*@description:寫業(yè)務(wù)邏輯

publicclassTccJobimplementsJob{

privatestaticStringsql="select*fromsr_mainlimit100";

@Override

publicvoidexecute(JobExecutionContextjobExecutionContext)throwsJobExecutionException{

System.out.println("hello"+newDate());

JdbcTemplatejdbcTemplate=newJdbcTemplate();

RowListrowList=jdbcTemplate.queryRowList(sql);

for(inti=0;irowList.size();i++){

System.out.println(rowList.get(i).get("mhzsfz"));

}

2.配置一個(gè)監(jiān)聽器,模擬初始化任務(wù),處理db數(shù)據(jù)

packagetcc.test.quartz;

importjavax.servlet.ServletContextEvent;

importjavax.servlet.ServletContextListener;

importorg.quartz.CronScheduleBuilder;

importorg.quartz.JobBuilder;

importorg.quartz.JobDetail;

importorg.quartz.Scheduler;

importorg.quartz.SchedulerException;

importorg.quartz.Trigger;

importorg.quartz.TriggerBuilder;

importorg.quartz.impl.StdSchedulerFactory;

*ApplicationLifecycleListenerimplementationclass

*ApplicationContextListener

publicclassApplicationContextListenerimplementsServletContextListener{

publicstaticSchedulerscheduler=null;

*Defaultconstructor.

publicApplicationContextListener(){

System.out.println("ApplicationContextListener起來了");

*@seeServletContextListener#contextDestroyed(ServletContextEvent)

//關(guān)閉Web應(yīng)用時(shí),注銷定時(shí)任務(wù)

publicvoidcontextDestroyed(ServletContextEventarg0){

try{

scheduler.shutdown();

System.out.println("scheduler.shutdown");

}catch(SchedulerExceptione){

e.printStackTrace();

*@seeServletContextListener#contextInitialized(ServletContextEvent)

//開啟Web應(yīng)用時(shí),開啟定時(shí)任務(wù)

publicvoidcontextInitialized(ServletContextEventarg0){

try{

scheduler=StdSchedulerFactory.getDefaultScheduler();

//在這里我編寫了三個(gè)定時(shí)任務(wù)

JobDetailupdataTheStatus=JobBuilder.newJob(TccJob.class)

.withIdentity("updataTheStatus","group1")

.build();

JobDetailupdateTheRemainer=JobBuilder.newJob(TccJob.class)

.withIdentity("updateTheRemainer","group2")

.build();

JobDetaildeleteYstdayOrder=JobBuilder.newJob(TccJob.class)

.withIdentity("deleteYstdayOrder","group3")

.build();

//三個(gè)觸發(fā)器

Triggertrigger1=updateTheStatus();

Triggertrigger2=updateTheRemainer();

Triggertrigger3=deleteYstdayOrder();

//注冊(cè)

scheduler.scheduleJob(updataTheStatus,trigger1);

scheduler.scheduleJob(update

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論