<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Knight of the round table

    wansong

    Quarz 配置(一) - JobDetail

    Quartz是一個(gè)開源的作業(yè)調(diào)度框架,完全由java寫的,你能通過它創(chuàng)建簡(jiǎn)單或者復(fù)雜的任務(wù)。他能提供巨大的靈活性,但又不犧牲簡(jiǎn)單性。

     

    Quartz的核心概念 :調(diào)度器、觸發(fā)器、作業(yè) 

    調(diào)度器(Scheduler)

    Scheduler負(fù)責(zé)管理Quartz的運(yùn)行環(huán)境,Quartz它是基于多線程架構(gòu)的,它啟動(dòng)的時(shí)候會(huì)初始化一套線程,這套線程會(huì)用來執(zhí)行一些預(yù)置的作業(yè)。

    要?jiǎng)?chuàng)建一個(gè)作業(yè)并能夠被觸發(fā)調(diào)用,必須在Scheduler上面注冊(cè)一個(gè)JobDetailTrigger。

    Scheduler提攜了所有TriggerJobDetail,使它們協(xié)調(diào)工作。這些TriggerJobDetail通過自身的namegroup屬性區(qū)分。

           Scheduler SchedulerFactory產(chǎn)生,我們可以通過以下方式獲取Scheduler的實(shí)例:

         //ServletContext上下文中查找SchedulerFactory

         SchedulerFactory   factory = (SchedulerFactory)

    ServletActionContext.getServletContext().getAttribute("org.quartz.impl.StdSchedulerFactory.KEY");

     

       //獲取Scheduler對(duì)象

       Scheduler defScheduler = factory.getScheduler();

    作業(yè)

    Job

    任務(wù),其實(shí)就是一個(gè)接口。要?jiǎng)?chuàng)建一個(gè)任務(wù),必須得實(shí)現(xiàn)這個(gè)接口。該接口只有一個(gè)execute方法,任務(wù)每次被調(diào)用的時(shí)候都會(huì)執(zhí)行這個(gè)execute方法的邏輯。

    public class TestJob impletemens org.quartz.Job{

             @Override

             public void execute(JobExecutionContext context) throws JobExecutionException{

                       // you business logic

                       // …

                     System.out.println("########### this is testJob running ############");

         }

    }

     

    JobDetail

    JobDetail 用來保存我們作業(yè)的詳細(xì)信息。一個(gè)JobDetail可以有多個(gè)Trigger,但是一個(gè)Trigger只能對(duì)應(yīng)一個(gè)JobDetail。下面是JobDetail的一些常用的屬性和含義

     

     

    參數(shù)名

    類型

    備注

    name

    String

    任務(wù)的名稱,必須

    group

    String

    任務(wù)所在組,默認(rèn)為DEFAULT

    jobClass

    Class

    任務(wù)的實(shí)現(xiàn)類,必須

    description

    String

    描述

    jobDataMap

    JobDataMap

    用來給作業(yè)提供數(shù)據(jù)支持的數(shù)據(jù)結(jié)構(gòu)

    volatility

    Boolean

    重啟應(yīng)用之后是否刪除任務(wù)的相關(guān)信息,默認(rèn)false

    durability

    Boolean

    任務(wù)完成之后是否依然保留到數(shù)據(jù)庫(kù),默認(rèn)false

    shouldRecover

    Boolean

    應(yīng)用重啟之后時(shí)候忽略過期任務(wù),默認(rèn)false

    jobListeners

    Set

    監(jiān)聽器

     

     

    JobDataMap

    這是一個(gè)給作業(yè)提供數(shù)據(jù)支持的數(shù)據(jù)結(jié)構(gòu),使用方法和java.util.Map一樣,非常方便。當(dāng)一個(gè)作業(yè)被分配給調(diào)度器時(shí),JobDataMap實(shí)例就隨之生成。

    Job有一個(gè)StatefulJob子接口,代表有狀態(tài)的任務(wù),該接口是一個(gè)沒有方法的標(biāo)簽接口,其目的是讓Quartz知道任務(wù)的類型,以便采用不同的執(zhí)行方案。無狀態(tài)任務(wù)在執(zhí)行時(shí)擁有自己的JobDataMap拷貝,對(duì)JobDataMap的更改不會(huì)影響下次的執(zhí)行。而有狀態(tài)任務(wù)共享共享同一個(gè)JobDataMap實(shí)例,每次任務(wù)執(zhí)行對(duì)JobDataMap所做的更改會(huì)保存下來,后面的執(zhí)行可以看到這個(gè)更改,也即每次執(zhí)行任務(wù)后都會(huì)對(duì)后面的執(zhí)行發(fā)生影響。

    正因?yàn)檫@個(gè)原因,無狀態(tài)的Job可以并發(fā)執(zhí)行,而有狀態(tài)的StatefulJob不能并發(fā)執(zhí)行,這意味著如果前次的StatefulJob還沒有執(zhí)行完畢,下一次的任務(wù)將阻塞等待,直到前次任務(wù)執(zhí)行完畢。有狀態(tài)任務(wù)比無狀態(tài)任務(wù)需要考慮更多的因素,程序往往擁有更高的復(fù)雜度,因此除非必要,應(yīng)該盡量使用無狀態(tài)的Job。

    如果Quartz使用了數(shù)據(jù)庫(kù)持久化任務(wù)調(diào)度信息,無狀態(tài)的JobDataMap僅會(huì)在Scheduler注冊(cè)任務(wù)時(shí)保持一次,而有狀態(tài)任務(wù)對(duì)應(yīng)的JobDataMap在每次執(zhí)行任務(wù)后都會(huì)進(jìn)行保存。

    JobDataMap實(shí)例也可以與一個(gè)觸發(fā)器相關(guān)聯(lián)。這種情況下,對(duì)于同一作業(yè)的不同觸發(fā)器,我們可以在JobDataMap中添加不同的數(shù)據(jù),以便作業(yè)在不同時(shí)間執(zhí)行時(shí)能夠提供更為靈活的數(shù)據(jù)支持(學(xué)校上午放眼保健操錄音第一版,下午放第二版)。

    不管是有狀態(tài)還是無狀態(tài)的任務(wù),在任務(wù)執(zhí)行期間對(duì)Trigger的JobDataMap所做的更改都不會(huì)進(jìn)行持久,也即不會(huì)對(duì)下次的執(zhí)行產(chǎn)生影響。

     

     

    posted on 2011-08-07 13:24 w@ns0ng 閱讀(1600) 評(píng)論(0)  編輯  收藏 所屬分類: jbossjava

    主站蜘蛛池模板: 最近2019中文字幕mv免费看| 色婷婷亚洲十月十月色天| 51精品视频免费国产专区| 精品亚洲成a人在线观看| 亚洲综合激情另类小说区| 中文字幕第一页亚洲| 国产又大又黑又粗免费视频| 亚洲人成网站在线观看播放| 高清国语自产拍免费视频国产| 91精品全国免费观看含羞草| 久久久久久毛片免费看| 色www免费视频| 亚洲国产成人无码AV在线| 亚洲一区二区三区深夜天堂| 亚洲精品高清视频| 亚洲Av永久无码精品三区在线 | 免费a在线观看播放| 女性自慰aⅴ片高清免费| 亚洲国产成人久久精品大牛影视| 亚洲白色白色永久观看| 亚洲人成电影在线天堂| 亚洲AV无码欧洲AV无码网站| 国产亚洲精品资在线| 亚洲性久久久影院| 亚洲国产高清在线一区二区三区| 国产成人免费网站在线观看| 日韩免费高清视频网站| 麻豆国产人免费人成免费视频| 免费鲁丝片一级在线观看| 热99re久久免费视精品频软件| 免费无码黄十八禁网站在线观看| 无码国产精品一区二区免费式直播| 黄色网址免费观看| 国产va免费精品观看精品| 性做久久久久久久免费看| 久久WWW免费人成人片| 四虎影视大全免费入口| 日本人的色道www免费一区| 国产又粗又猛又爽又黄的免费视频| 免费在线观看中文字幕| 亚洲视频一区二区|