日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Quartz框架基于Calendar的排除规则

發(fā)布時間:2024/4/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz框架基于Calendar的排除规则 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如果要在觸發(fā)器的基礎(chǔ)上,排除一些時間區(qū)間不執(zhí)行任務(wù),就要用到 Quartz的Calendar類(注意不是 JDK的 Calendar)。可以按年、月、周、日、特定日期、Cron表達(dá)式排除。

調(diào)用 Trigger的 modifiedByCalendar()添加到觸發(fā)器中,并且調(diào)用調(diào)度器的addCalendar()方法注冊排除規(guī)則。

public class CalendarDemo {public static void main(String[] args) throws Exception {SchedulerFactory sf = new StdSchedulerFactory();Scheduler scheduler = sf.getScheduler();scheduler.start();// 定義日歷AnnualCalendar holidays = new AnnualCalendar();// 排除咕泡日Calendar gupaoDay = (Calendar) new GregorianCalendar(2019, 8, 8);holidays.setDayExcluded(gupaoDay, true);// 排除中秋節(jié)Calendar midAutumn = new GregorianCalendar(2019, 9, 13);holidays.setDayExcluded(midAutumn, true);// 排除圣誕節(jié)Calendar christmas = new GregorianCalendar(2019, 12, 25);holidays.setDayExcluded(christmas, true);// 調(diào)度器添加日歷scheduler.addCalendar("holidays", holidays, false, false);JobDetail jobDetail = JobBuilder.newJob(MyJob1.class).withIdentity("job1", "group1").usingJobData("leon","2673").build();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow().modifiedByCalendar("holidays").withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();Date firstRunTime = scheduler.scheduleJob(jobDetail, trigger);System.out.println(jobDetail.getKey() + " 第一次觸發(fā): " + firstRunTime);} } Calendar 名稱用法
BaseCalendar為高級的Calendar 實現(xiàn)了基本的功能,實現(xiàn)了org.quartz.Calendar 接口
AnnualCalendar排除年中一天或多天
CronCalendar日歷的這種實現(xiàn)排除了由給定的CronExpression 表達(dá)的時間集合。例如,
您可以使用此日歷使用表達(dá)式“* * 0-7,18-23?* *”每天排除所有營業(yè)時
間(上午8 點至下午5 點)。如果CronTrigger 具有給定的cron 表達(dá)式并
且與具有相同表達(dá)式的CronCalendar 相關(guān)聯(lián),則日歷將排除觸發(fā)器包含的
所有時間,并且它們將彼此抵消。
DailyCalendar您可以使用此日歷來排除營業(yè)時間(上午8 點- 5 點)每天。每個
DailyCalendar 僅允許指定單個時間范圍,并且該時間范圍可能不會跨越每
日邊界(即,您不能指定從上午8 點至凌晨5 點的時間范圍)。如果屬
性invertTimeRange 為false(默認(rèn)),則時間范圍定義觸發(fā)器不允許觸發(fā)
的時間范圍。如果invertTimeRange 為true,則時間范圍被反轉(zhuǎn)- 也就是
排除在定義的時間范圍之外的所有時間。
HolidayCalendar特別的用于從Trigger 中排除節(jié)假日
MonthlyCalendar排除月份中的指定數(shù)天,例如,可用于排除每月的最后一天
WeeklyCalendar排除星期中的任意周幾,例如,可用于排除周末,默認(rèn)周六和周日

?

總結(jié)

以上是生活随笔為你收集整理的Quartz框架基于Calendar的排除规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。