摘要:一介紹在企業(yè)應(yīng)用中,我們經(jīng)常會碰到時(shí)間任務(wù)調(diào)度的需求,比如每天凌晨生成前天報(bào)表,每小時(shí)生成一次匯總數(shù)據(jù)等等。三者關(guān)系簡單來說就是,調(diào)度器負(fù)責(zé)調(diào)度各個(gè)任務(wù),到了某個(gè)時(shí)刻或者過了一定時(shí)間,觸發(fā)器觸動了,特定任務(wù)便啟動執(zhí)行。
一、Quartz介紹
在企業(yè)應(yīng)用中,我們經(jīng)常會碰到時(shí)間任務(wù)調(diào)度的需求,比如每天凌晨生成前天報(bào)表,每小時(shí)生成一次匯總數(shù)據(jù)等等。Quartz是出了名的任務(wù)調(diào)度框架,它可以與J2SE和J2EE應(yīng)用程序相結(jié)合,功能灰常強(qiáng)大,輕輕松松就能與Spring集成,使用方便。
二、Quartz中的概念
主要有三個(gè)核心概念:調(diào)度器、任務(wù)和觸發(fā)器。三者關(guān)系簡單來說就是,調(diào)度器負(fù)責(zé)調(diào)度各個(gè)任務(wù),到了某個(gè)時(shí)刻或者過了一定時(shí)間,觸發(fā)器觸動了,特定任務(wù)便啟動執(zhí)行。概念相對應(yīng)的類和接口有:
1)JobDetail:望文生義就是描述任務(wù)的相關(guān)情況;
2)Trigger:描述出發(fā)Job執(zhí)行的時(shí)間觸發(fā)規(guī)則。有SimpleTrigger和CronTrigger兩個(gè)子類代表兩種方式,一種是每隔多少分鐘小時(shí)執(zhí)行,則用SimpleTrigger;另一種是日歷相關(guān)的重復(fù)時(shí)間間隔,如每天凌晨,每周星期一運(yùn)行的話,通過Cron表達(dá)式便可定義出復(fù)雜的調(diào)度方案。
3)Scheduler:代表一個(gè)Quartz的獨(dú)立運(yùn)行容器,Trigger和JobDetail要注冊到Scheduler中才會生效,也就是讓調(diào)度器知道有哪些觸發(fā)器和任務(wù),才能進(jìn)行按規(guī)則進(jìn)行調(diào)度任務(wù)。
三、Spring中使用Quartz
1,所需jar包:quartz.jar,spring.jar,commons-collections-3.2.jar;
2,添加業(yè)務(wù)邏輯類(簡單示例):
public class UserHeartBeat {
public void Show(){
Calendar cal=Calendar.getInstance();
long date=cal.getTime().getTime(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); String result=sdf.format(date); System.out.println(result); System.out.println("Spring Quartz Test"); } public static void main(String args[]){ new UserHeartBeat().Show(); }
}
這個(gè)類的作用就是用來定義每隔多久要做的事情
3,配置文件(applicationContext.xml) 用來配置定時(shí)任務(wù)
Show 10,15,20,25,30,35,40,45,50,55 * * * * ?
其中間隔時(shí)間的配置說明見 定時(shí)任務(wù)配置的間間隔配置說明
4.在主配置文件web.xml中注冊定時(shí)任務(wù)的配置文件(applicationContext.xml)
spring org.springframework.web.context.ContextLoaderServlet 1 spring *.do 5.定義一個(gè)測試類來調(diào)用定時(shí)任務(wù) contextConfigLocation /WEB-INF/classes/ApplicationContext.xml
public static void main(String[] args) {
System.out.println("Spring Quartz test start..."); ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext.xml");
// 如果配置文件中將startQuertz bean的lazy-init設(shè)置為false 則不用實(shí)例化
System.out.println("Spring Quartz test end..."); }
運(yùn)行效果
案例下載地址 鏈接描述
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74766.html
摘要:本文使用實(shí)現(xiàn)對定時(shí)任務(wù)的增刪改查啟用停用等功能。并把定時(shí)任務(wù)持久化到數(shù)據(jù)庫以及支持集群。決定什么時(shí)候來執(zhí)行任務(wù)。定義的是任務(wù)數(shù)據(jù),而真正的執(zhí)行邏輯是在中。封裝定時(shí)任務(wù)接口添加一個(gè)暫停恢復(fù)刪除修改暫停所有恢復(fù)所有 簡介 Quartz是一款功能強(qiáng)大的任務(wù)調(diào)度器,可以實(shí)現(xiàn)較為復(fù)雜的調(diào)度功能,如每月一號執(zhí)行、每天凌晨執(zhí)行、每周五執(zhí)行等等,還支持分布式調(diào)度。本文使用Springboot+Myba...
本文來自網(wǎng)絡(luò)一些博客的整理(包括gong1208的博客 dary1715的博客) 1、簡介 這個(gè)系列介紹Spring框架實(shí)現(xiàn)定時(shí)任務(wù)的兩種方式以及一些高級的用法,包括: 1、使用Quartz,這是一個(gè)功能比較強(qiáng)大的的調(diào)度器,可以讓你的程序在指定時(shí)間執(zhí)行,也可以按照某一個(gè)頻度執(zhí)行,配置起來稍顯復(fù)雜,稍后會詳細(xì)介紹。 2、Spring3.0以后自帶的task,可以將它看成一個(gè)輕量級的Quartz,而且...
摘要:在定時(shí)器接口的方法中我們可以發(fā)現(xiàn)一個(gè)方法接受接口,而也是一個(gè)接口,抽象了觸發(fā)任務(wù)執(zhí)行的觸發(fā)器。更常用的一個(gè)觸發(fā)器是,它使用表達(dá)式指定何時(shí)執(zhí)行任務(wù)。配置定時(shí)任務(wù)首先看看配置。配置提供了命名空間,讓配置定時(shí)任務(wù)非常簡單。 本文參考自Spring官方文檔 34. Task Execution and Scheduling。 在程序中常常有定時(shí)任務(wù)的需求,例如每隔一周生成一次報(bào)表、每個(gè)月月末清...
閱讀 1695·2021-11-24 09:39
閱讀 2469·2021-11-18 10:07
閱讀 3657·2021-08-31 09:40
閱讀 3317·2019-08-30 15:44
閱讀 2628·2019-08-30 12:50
閱讀 3649·2019-08-26 17:04
閱讀 1430·2019-08-26 13:49
閱讀 1262·2019-08-23 18:05