新聞中心
現(xiàn)代社會,各行各業(yè)都離不開計劃和日程安排。但是,傳統(tǒng)的手寫日歷和電子日歷往往難以滿足人們精細化的需求。為了更好地管理時間與工作,業(yè)內(nèi)逐漸涌現(xiàn)出各種強大的日程工具。quartz數(shù)據(jù)庫日程安排作為其中一款備受好評的日程工具,優(yōu)秀的性能和方便的使用方式受到了越來越多人的歡迎。

一、quartz數(shù)據(jù)庫日程安排介紹
1、什么是quartz數(shù)據(jù)庫日程安排?
quartz是一款用于創(chuàng)建定時任務(wù)的開源工具。quartz封裝了定時任務(wù)的核心邏輯,可以方便地創(chuàng)建并管理多個定時任務(wù)。quartz所使用的數(shù)據(jù)存儲方式采用的是數(shù)據(jù)庫存儲。
2、quartz庫表結(jié)構(gòu)
quartz庫表結(jié)構(gòu)如下圖所示:

三張表分別是:任務(wù)、觸發(fā)器、日歷表。任務(wù)與觸發(fā)器是一對一的關(guān)系,日歷表則是可選表。
3、quartz核心概念
quartz主要有四個核心概念:Job、Trigger、Scheduler、Calendar。
Job:實現(xiàn)了具體的任務(wù)內(nèi)容。通過實現(xiàn)Job接口來定義自己的任務(wù)。
Trigger:用于觸發(fā)Job。定義了任務(wù)執(zhí)行的時間。
Scheduler:任務(wù)調(diào)度器。負責(zé)管理任務(wù)和調(diào)度器。
Calendar:提供了執(zhí)行定時任務(wù)的時間表。
二、為何選擇quartz數(shù)據(jù)庫日程安排
1、之一優(yōu)勢:quartz庫表結(jié)構(gòu)清晰
據(jù)傳統(tǒng)的定時任務(wù)框架相比,quartz庫表結(jié)構(gòu)非常的整齊清晰。
首先我們安裝好quartz之后,quartz會自動為我們建立如下的表結(jié)構(gòu):

JobDetl:表示一個具體的可執(zhí)行的調(diào)度程序,Job是這個可執(zhí)行程調(diào)度程序所要執(zhí)行的內(nèi)容,另外JobDetl還包含了這個任務(wù)調(diào)度的方案和策略。
Trigger:即調(diào)度觸發(fā)器,描述觸發(fā)Job執(zhí)行的時間點和時間策略。
SimpleTrigger: 簡單觸發(fā)器,一個特定的時間段內(nèi)執(zhí)行一次作業(yè)任務(wù)。然后再基于設(shè)定的時間間隔,重復(fù)地執(zhí)行多次任務(wù)。
CronTrigger:調(diào)度接口,按日歷規(guī)定的時間執(zhí)行作業(yè)任務(wù)。簡單地理解為按一定的時間間隔執(zhí)行任務(wù)。
Trigger 實現(xiàn)了Scheduler的組件觸發(fā)的接口,當(dāng)一個trigger被觸發(fā)時,就執(zhí)行與之關(guān)聯(lián)的job。
2、第二優(yōu)勢:quartz高度靈活
quartz框架為用戶提供了非常多的配置選項,可以適應(yīng)不同環(huán)境下的任務(wù)調(diào)度需求。比如:
1) 網(wǎng)頁式的調(diào)度界面,當(dāng)然,使用原生的界面要寫一定的代碼,可以使用firefox的插件——即時編輯器,因為是javascript的,所以jsp真沒什么需要做的,直接在.jsp里面嵌入javascript代碼就可以了。

2) 完整的任務(wù)調(diào)度控制。
3) quartz的任務(wù)調(diào)度模塊可嵌入任何Java應(yīng)用程序中。
4) 任務(wù)的并發(fā)執(zhí)行 —— 即在同時執(zhí)行多個任務(wù)。
5) 計劃執(zhí)行 —— 按照某個預(yù)定的計劃執(zhí)行任務(wù)比如在每天的8點執(zhí)行。
6) workflow流程 —— 即根據(jù)實際的業(yè)務(wù)流程來調(diào)度任務(wù)。
3、第三優(yōu)勢:quartz具有高效性
-quartz可以支持集群模式下使用,多個調(diào)度服務(wù)實例可通過共享同一個數(shù)據(jù)庫以實現(xiàn)負載均衡和失效轉(zhuǎn)移。
-quartz能滿足各種任務(wù)的復(fù)雜性和靈活性需求,可以執(zhí)行任務(wù)、子任務(wù)、觸發(fā)器靈活且可定制化。
-quartz的任務(wù)調(diào)度框架并不會帶來太大的負載,所以能夠保證它的穩(wěn)定性。
-quartz可以根據(jù)配置參數(shù)和狀態(tài)的改變來流暢地調(diào)整任務(wù)的執(zhí)行順序和執(zhí)行方式,從而保證任務(wù)的高效執(zhí)行。
在任務(wù)調(diào)度方面,quartz是足夠強大的。在使用中,用戶可以通過quartz的API來實現(xiàn)任務(wù)的分派、分配,同時也可控制批處理的數(shù)據(jù)加載,實現(xiàn)高效的數(shù)據(jù)處理。由于quartz使用的是數(shù)據(jù)庫來存儲調(diào)度任務(wù)的參數(shù),因此它的可靠性得到了保證。
三、怎么使用quartz實現(xiàn)數(shù)據(jù)庫日程安排
1、準備工作
安裝好java JDK、quartz組件(Maven中添加groupId、artifactId即可),并創(chuàng)建一個簡單的MySQL數(shù)據(jù)庫。
2、新建約會類(任務(wù)類)
“`java
public class JobTriggerExample implements Job {
private int runCount = 0;
public void execute(JobExecutionContext context) throws JobExecutionException {
runCount++;
System.out.println(“執(zhí)行…”);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
“`
3、編寫任務(wù)調(diào)度器工具類
“`java
public class SchedulerUtil {
//從工廠中獲取一個調(diào)度器實例化
private static Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
/**
* 開始執(zhí)行定時調(diào)度任務(wù)
* @throws SchedulerException
*/
public static void startSchedule() throws SchedulerException {
sched.start();
}
/**
* 向 Scheduler 中新增一個 JobDetl 和 Trigger
* 這樣,就完成了一個簡單的定時任務(wù)
* @throws SchedulerException
*/
public static void scheduleJob() throws SchedulerException{
JobDetl job = newJob(JobTriggerExample.class).withIdentity(“jobname”, “jobgroup”).build();
Trigger trigger = newTrigger().withIdentity(“triggername”, “triggergroup”)
.withSchedule(simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever())
.startNow()
.build();
sched.scheduleJob(job, trigger);
}
/**
* 關(guān)閉 Scheduler
* @throws SchedulerException
*/
public static void shutdownSchedule() throws SchedulerException {
sched.shutdown();
}
}
“`
4、測試(啟動任務(wù)調(diào)度器)
“`java
import org.quartz.SchedulerException;
public class QuartzApplication {
public static void mn(String[] args) throws SchedulerException, InterruptedException {
//打印系統(tǒng)時間
System.out.println(“系統(tǒng)時間\t”+new Date().toLocaleString());
//任務(wù)調(diào)度器
SchedulerUtil.startSchedule();
System.out.println(“System running…”);
}
}
“`
四、頂級企業(yè)都在使用quartz數(shù)據(jù)庫日程安排
quartz日程工具已經(jīng)被眾多企業(yè)所使用,包括:中國移動、中國聯(lián)通、廣東電信以及四大銀行等。
移動日程(Mobile Schedule)、小日程(Schedule Lite)、OA日程、So Easy小日程等使用quartz實現(xiàn)調(diào)度任務(wù)。企業(yè)因此獲得了一系列效益: 1) 高效的任務(wù)調(diào)度。 2) 可靠的任務(wù)管理。 3) 敏捷的業(yè)務(wù)變化和部署。
五、
quartz數(shù)據(jù)庫日程安排作為一種強大的日程安排工具,它憑借著精致的庫表結(jié)構(gòu)、高度靈活性和高效性獲得了眾多用戶的青睞。通過quartz可以方便地創(chuàng)立和管理多個定時任務(wù),實現(xiàn)高效、可靠的任務(wù)調(diào)度,解決了人們傳統(tǒng)日歷無法滿足的需求。隨著quartz日程工具的不斷升級,它將為人們提供更加靈活、智能的日程安排服務(wù)。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
Spring+Quartz查詢數(shù)據(jù)庫動態(tài)設(shè)置cron表達式求助
n class=”org.springframework.scheng.quartz.SchedulerFactoryBean”>褲磨
主要有三個核心概念:調(diào)度器、任務(wù)和觸發(fā)器。
三者關(guān)系簡單來說就是,調(diào)度器負責(zé)調(diào)度各個任務(wù),到了某個時刻或者過了一定時間,觸發(fā)器觸動了,特定任務(wù)便啟動執(zhí)行。概念相對應(yīng)的類和接口有:
1)JobDetail:望文生義就是描述任務(wù)的相關(guān)情況;
2)Trigger:描述出發(fā)Job執(zhí)行的時間觸發(fā)規(guī)則。有SimpleTrigger和CronTrigger兩個子類代表兩種方式,一種是每隔多少分鐘小時執(zhí)行,則用SimpleTrigger;另一種是日歷相關(guān)的重復(fù)時間間隔,如每天凌晨,每周星期一運行的話,通過Cron表達式便可定義出復(fù)雜的調(diào)度方案。
3)Scheduler:代表一個Quartz的獨立運行容器,Trigger和JobDetail要注冊到Scheduler中才會生灶閉效,也就是讓調(diào)度器知隱檔裂道有哪些觸發(fā)器和任務(wù),才能進行按規(guī)則進蠢陪行調(diào)度任務(wù)。
關(guān)于quartz數(shù)據(jù)庫日程安排的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港云服務(wù)器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
本文題目:記事本好幫手:quartz數(shù)據(jù)庫日程安排(quartz數(shù)據(jù)庫日程安排)
瀏覽路徑:http://m.fisionsoft.com.cn/article/dhiogie.html


咨詢
建站咨詢
