麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Quartz.NET開源作業(yè)調(diào)度框架系列(二):CronTrigger

2019-11-14 13:42:23
字體:
供稿:網(wǎng)友

  CronTriggers比SimpleTrigger更加的靈活和有用,對于比較復(fù)雜的任務(wù)觸發(fā)規(guī)則,例如"每個(gè)星期天的晚上12:00"進(jìn)行備份任務(wù),SimpleTrigger就不能勝任,只能選擇CronTriggers.利用CronTrigger, 你不但能實(shí)現(xiàn)在"每個(gè)星期天的晚上12:00"進(jìn)行備份的任務(wù),還可以執(zhí)行  "在每個(gè)星期一/星期三/星期五的上午9:00到10:00期間每隔5 分鐘"進(jìn)行某個(gè)自動化任務(wù).

1 Cron ExPRessions

  Cron-Expressions 是用戶配置實(shí)例化的CronTrigger. Cron-Expressions是一個(gè)6個(gè)或者7個(gè)字符的字符串表達(dá)式, 每一個(gè)字符都表示一個(gè)具體的含義并且有取值范圍. 每個(gè)字符用空格進(jìn)行分隔,其表達(dá)的意義為(從左到右):

  

  一般來說Cron-Expressions 以6位居多,年一般省略.上圖的中每個(gè)字符的描述為 字符的意義+取值范圍(用[])+可用的特殊字符({}).例如  秒[0-59] { , - * /}就代表第一個(gè)字符是秒,取值范圍是0-59,同時(shí)可用的特殊字符為 , - * /  例如"0  15  10 ?  *  6L"代表的意義就是每月最后一個(gè)星期五的10:15. 下面介紹一下特殊字符的含義:

特殊字符

含義

*

所有值(all values)

?

沒有具體的值(no specific value)

-

范圍 0-10

,

附加值 1,2,5

L

在不同的字符位置代表的意義不同,"L" 在月天數(shù)段代表每月最后一天;如果單獨(dú)出現(xiàn)在星期段,代表7,就是星期最后一天周六(英文習(xí)慣用法).

W

給定日期最近的(周一到周五). 月天數(shù)段"15W",表示離每月第15天最近的工作日

#

月份的第多少天,"6#3" 表示月份中第三個(gè)星期5(6 = 周五 and "#3" =在月份中第三個(gè)).

2 常見的表達(dá)式

   下面給出一些常見的Cron-Expressions示例:

表達(dá)式

含義

0 0 12 * * ?

每天12pm啟動

0 15 10 ? * *

每天10:15am啟動

0 15 10 * * ?

每天10:15am啟動

0 15 10 * * ? *

每天10:15am啟動

0 15 10 * * ? 2005

 在 2005年每天10:15am啟動

0 * 14 * * ?

每天在 2pm到2:59pm之間的每分鐘進(jìn)行啟動

0 0/5 14 * * ?

每天在 2pm到2:55pm之間的每5分鐘進(jìn)行啟動

0 0/5 14,18 * * ?

每天在 2pm到2:55pm和6pm到6:55pm之間的每5分鐘進(jìn)行啟動

0 0-5 14 * * ?

每天在 2pm到2:05pm之間的每分鐘進(jìn)行啟動

0 10,44 14 ? 3 WED

每個(gè)三月份的星期三的2:10pm到 2:44pm進(jìn)行啟動

0 15 10 ? * MON-FRI

每個(gè)星期一到星期五的10:15am進(jìn)行啟動

0 15 10 15 * ?

每個(gè)月第15天的10:15am進(jìn)行啟動

0 15 10 L * ?

每個(gè)月最后一天的10:15am進(jìn)行啟動

0 15 10 L-2 * ?

每個(gè)月第二天到最后一天的10:15am進(jìn)行啟動

0 15 10 ? * 6L

每月最后一個(gè)星期五的10:15am進(jìn)行啟動

0/1 * * * * ?

每秒進(jìn)行啟動

0 15 10 ? * 6L 2002-2005

從2002年到2005年的每月最后一個(gè)星期五的10:15am進(jìn)行啟動

0 15 10 ? * 6#3

每月第三個(gè)星期五的10:15am進(jìn)行啟動

0 0 12 1/5 * ?

從每月第一天開始,每隔5天的12pm進(jìn)行啟動

0 11 11 11 11 ?

每年11月11日的11:11am進(jìn)行啟動 

3 CronTrigger示例

  由上面的常見表達(dá)式我們知道表達(dá)式 "0/1 * * * * ?"代表了每秒執(zhí)行 , 其CronTrigger定義如下:

1                 ITrigger trigger = TriggerBuilder.Create()2                .WithIdentity("cronTrigger1", "SimpleGroup")3                .WithCronSchedule("0/1 * * * * ?", x => x4                    .WithMisfireHandlingInstructionFireAndProceed())5                .ForJob("HelloJob", "SimpleGroup")6                .Build();

   也可以用下面的方法進(jìn)行定義(注意默認(rèn)時(shí)間不是系統(tǒng)時(shí)間-北京時(shí)間,所以如果打印出Job第一次打印的時(shí)間不是正確的時(shí)間,但是好像不影響使用):

 1 //定義job 2 IJobDetail job3 = JobBuilder.Create<ColorJob>() 3 .WithIdentity("job3", "group1") 4 .Build(); 5 //定義cronTrigger 6 ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create() 7                              .WithIdentity("cronTrigger", "group1") 8                               .WithCronSchedule("0/20 * * * * ?", x => x 9                                         .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("China Standard Time")))//無效 ?10                              .Build();11 //默認(rèn)開始時(shí)間12 DateTimeOffset scheduleTime3 = sched.ScheduleJob(job3, cronTrigger);13 //轉(zhuǎn)換到本地時(shí)間(北京時(shí)間)14 DateTimeOffset dt=  scheduleTime3.ToLocalTime();//15 //北京時(shí)間為默認(rèn)時(shí)間+8小時(shí)16 DateTimeOffset scheduleTimeChina = scheduleTime3.AddHours(8);17 //返回Cron Expression18 string cronExpression = cronTrigger.CronExpressionString;

    如果在定義的時(shí)間規(guī)則下,我想排除一些日期,那么如何實(shí)現(xiàn)呢?用ModifiedByCalendar即可實(shí)現(xiàn):

 1         //排除的日期 2            HolidayCalendar cal = new HolidayCalendar(); 3            DateTime dt排除 = new DateTime(2015, 12, 1); 4            cal.AddExcludedDate(dt排除); 5  6            sched.AddCalendar("myHolidayCalendar", cal, false, true); 7             //定義job 8            IJobDetail job3 = JobBuilder.Create<ColorJob>() 9             .WithIdentity("job3", "group1")10             .Build();11            //定義cronTrigger12            ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create()13                                          .WithIdentity("cronTrigger", "group1")14                                           .WithCronSchedule("0/20 * * * * ?", x => x15                                                     .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("China Standard Time")))//無效 ?16                                          .ModifiedByCalendar("myHolidayCalendar")17                                          .Build();18            //默認(rèn)開始時(shí)間19            DateTimeOffset scheduleTime3 = sched.ScheduleJob(job3, cronTrigger);20             //轉(zhuǎn)換到本地時(shí)間(北京時(shí)間)21            //  2015-12-02 00:00:00 +08:00 不包含 2015-12-0122            DateTimeOffset dt = scheduleTime3.ToLocalTime();23             //北京時(shí)間為默認(rèn)時(shí)間+8小時(shí)24            DateTimeOffset scheduleTimeChina = scheduleTime3.AddHours(8);25            //返回Cron Expression26            string cronExpression = cronTrigger.CronExpressionString;

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品久久久久久影院8一贰佰 | 免费毛片在线视频 | 日本中文高清 | 福利免费在线 | 亚洲综合一区在线观看 | 中国产一级毛片 | 国产一区二区三区欧美 | 精品国产91久久久久久浪潮蜜月 | 国产精品成人久久 | 在线观看中文字幕av | 日本aaa一级片 | 88xx成人永久免费观看 | 成人在线视频免费看 | 免费毛片观看 | 欧美成人精品欧美一级乱黄 | 亚洲精品a级 | 国产午夜电影在线观看 | 美女视频黄视大全视频免费网址 | 369看片你懂的小视频在线观看 | 久久精品国产99国产精品澳门 | 亚洲成人网一区 | 免费观看三级毛片 | 久久免费视频精品 | 国产青草视频在线观看视频 | 狠狠干夜夜草 | 欧美成人性生活片 | 黄色网址入口 | 久久久久久久免费看 | 欧美一区二区三区免费观看 | 蜜桃网在线 | 欧美一级美国一级 | 国产精品成人av片免费看最爱 | 久久成人免费观看 | 日本在线一区二区 | 91 在线视频观看 | 久久男人的天堂 | 久久亚洲第一 | 成人性视频欧美一区二区三区 | 免费放黄网站在线播放 | 一级电影在线免费观看 | 亚洲精品在线观看免费 |