Quartz.NET是一個(gè)開源的作業(yè)調(diào)度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#寫成,可用于winform和asp.net應(yīng)用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執(zhí)行一個(gè)作業(yè)而創(chuàng)建簡單的或復(fù)雜的調(diào)度。它有很多特征,如:數(shù)據(jù)庫支持,集群,插件,支持cron-like表達(dá)式等等 1、特殊符號(hào)的介紹 Cron表達(dá)式的時(shí)間字段除允許設(shè)置數(shù)值外,還可使用一些特殊的字符,提供列表、范圍、通配符等功能,細(xì)說如下 1)星號(hào)(*):可用在所有字段中,表示對應(yīng)時(shí)間域的每一個(gè)時(shí)刻,例如,*在分鐘字段時(shí),表示“每分鐘”; 2)問號(hào)(?):該字符只在日期和星期字段中使用,它通常指定為“無意義的值”,相當(dāng)于點(diǎn)位符; 3)減號(hào)(-):表達(dá)一個(gè)范圍,如在小時(shí)字段中使用“10-12”,則表示從10到12點(diǎn),即10,11,12; 4)逗號(hào)(,):表達(dá)一個(gè)列表值,如在星期字段中使用“MON,WED,FRI”,則表示星期一,星期三和星期五; 5)斜杠(/):x/y表達(dá)一個(gè)等步長序列,x為起始值,y為增量步長值。如在分鐘字段中使用0/15,則表示為0,15,30和45秒, 而5/15在分鐘字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y;
2、Quartz Cron 表達(dá)式支持到七個(gè)域 ps: 月份和星期的名稱是不區(qū)分大小寫的。FRI 和 fri 是一樣的, 域之間有空格分隔,這和 UNIX cron 一樣。無可爭辯的,我們能寫的最簡單的表達(dá)式看起來就是這個(gè)了: * * * ? * *這個(gè)表達(dá)會(huì)每秒鐘(每分種的、每小時(shí)的、每天的)激發(fā)一個(gè)部署的 job
3、特殊符號(hào) 1)星號(hào)(*):指示著你想在這個(gè)域上包含所有合法的值。例如,在月份域上使用星號(hào)意味著每個(gè)月都會(huì)觸發(fā)這個(gè) trigger。 例如:0 * 17 * * ? 意義:每天從下午5點(diǎn)到下午5:59中的每分鐘激發(fā)一次 trigger。 2)問號(hào)(?):? 號(hào)只能用在日和周域上,但是不能在這兩個(gè)域上同時(shí)使用。你可以認(rèn)為? 字符是 "我并不關(guān)心在該域上是什么值。" 這不同于星號(hào),星號(hào)是指示著該域上的每一個(gè)值。? 是說不為該域指定值。 例如:0 10,44 14 ? 3 WEB 意義:在三月中的每個(gè)星期三的下午 2:10 和 下午 2:44 被觸發(fā) 3)逗號(hào)(,): 逗號(hào) (,) 是用來在給某個(gè)域上指定一個(gè)值列表的。 例如: 0 0,15,30,45 * * * ? 意義:每個(gè)15秒觸發(fā)一次trigger 4)斜杠(/): 斜杠 (/) 是用于時(shí)間表的遞增的。我們剛剛用了逗號(hào)來表示每15分鐘的遞增,但是我們也能寫成這樣0/15。 例如:0/15 0/30 * * * ? 意義:在整點(diǎn)和半點(diǎn)時(shí)每15秒觸發(fā) trigger。 5)中劃線(-):中劃線 (-) 用于指定一個(gè)范圍。例如,在小時(shí)域上的 3-8 意味著 "3,4,5,6,7 和 8 點(diǎn)。" 域的值不允許回卷,所以像 50-10 這樣的值是不允許的 例如: 0 45 3-8 ? * * 意義:在上午的3點(diǎn)至上午的8點(diǎn)的45分時(shí)觸發(fā) trigger 6)L字母:L 說明了某域上允許的最后一個(gè)值。它僅被日和周域支持。當(dāng)用在日域上,表示的是在月域上指定的月份的最后一天。例如,當(dāng)月域上指定了JAN 時(shí), 在日域上的L會(huì)促使 trigger 在1月31號(hào)被觸發(fā)。假如月域上是SEP,那么 L 會(huì)預(yù)示著在9月30號(hào)觸發(fā)。換句話說,就是不管指定了哪個(gè)月,都是在相應(yīng)月份的時(shí)最后一天觸發(fā) trigger。 例如: 0 0 8 L * ? 意義 是在每個(gè)月最后一天的上午 8:00 觸發(fā) trigger。在月域上的 * 說明是 "每個(gè)月"。 當(dāng) L 字母用于周域上,指示著周的最后一天,就是星期六 (或者數(shù)字7)。所以如果你需要在每個(gè)月的最后一個(gè)星期六下午的 11:59 觸發(fā) trigger,你可以用這樣的表達(dá)式0 59 23 ? * L。 7)W字母:W 字符代表著平日 (Mon-Fri),并且僅能用于日域中。它用來指定離指定日的最近的一個(gè)平日。大部分的商業(yè)處理都是基于工作周的,所以 W 字符可能是非常重要的。 例如,日域中的15W 意味著 "離該月15號(hào)的最近一個(gè)平日。" 假如15號(hào)是星期六,那么 trigger 會(huì)在14號(hào)(星期五)觸發(fā),因?yàn)樾瞧谒谋刃瞧谝唬ㄟ@個(gè)例子中是17號(hào))離15號(hào)更近。 (譯者Unmi注:不會(huì)在17號(hào)觸發(fā)的,如果是15W,可能會(huì)是在14號(hào)(15號(hào)是星期六)或者15號(hào)(15號(hào)是星期天)觸發(fā),也就是只能出現(xiàn)在鄰近的一天,如果15號(hào)當(dāng)天為平日直接就會(huì)當(dāng)日執(zhí)行)。 W只能用在指定的日域?yàn)閱翁?,不能是范圍或列表值?/span> 8)#號(hào):# 字符僅能用于周域中。它用于指定月份中的第幾周的哪一天。例如,如果你指定周域的值為6#3,它意思是某月的第三個(gè)周五 (6=星期五,#3意味著月份中的第三周)。 另一個(gè)例子2#1意思是某月的第一個(gè)星期一 (2=星期一,#1意味著月份中的第一周)。注意,假如你指定#5,然而月份中沒有第 5 周,那么該月不會(huì)觸發(fā)
4、常用Corn表達(dá)式 1)分鐘Corn表達(dá)式 2)日上Corn表達(dá)式 3)周、月表達(dá)式 參考資料來源于:http://www.cnblogs.com/GarfieldTom/p/3746290.html
|
|