下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 罕見腫瘤的個(gè)體化治療綜合治療模式構(gòu)建與個(gè)體化方案-2
- 2026江西贛州有色冶金研究所有限公司招聘11人備考題庫及一套參考答案詳解
- 餐廳股東之間財(cái)務(wù)制度
- 2026四川雅安市漢源縣審計(jì)局招聘編外專業(yè)技術(shù)人員2人備考題庫含答案詳解
- 五種財(cái)務(wù)制度
- 衛(wèi)健財(cái)務(wù)制度
- 釀酒企業(yè)財(cái)務(wù)制度
- 藥業(yè)財(cái)務(wù)制度及報(bào)銷流程
- 云南東北商會(huì)財(cái)務(wù)制度
- 單店合伙財(cái)務(wù)制度
- 高校行政管理流程及案例分析
- 高效節(jié)水灌溉方式課件
- 基坑安全工程題庫及答案解析
- 《人間充質(zhì)基質(zhì)細(xì)胞來源細(xì)胞外囊泡凍干粉質(zhì)量要求》(征求意見稿)
- 2025年海南省中級(jí)經(jīng)濟(jì)師考試(工商管理專業(yè)知識(shí)和實(shí)務(wù))能力提高訓(xùn)練試題庫及答案
- 鄉(xiāng)鎮(zhèn)村監(jiān)會(huì)培訓(xùn)課件
- 入團(tuán)申請(qǐng)書教學(xué)課件
- 松下微波爐NN-DS581M使用說明書
- 2025年江蘇省招聘警務(wù)輔助人員考試真題及答案
- 血透室院感相關(guān)課件
- (2025年標(biāo)準(zhǔn))sm調(diào)教協(xié)議書
評(píng)論
0/150
提交評(píng)論