Quartz框架基于Calendar的排除规则
生活随笔
收集整理的這篇文章主要介紹了
Quartz框架基于Calendar的排除规则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果要在觸發器的基礎上,排除一些時間區間不執行任務,就要用到 Quartz的Calendar類(注意不是 JDK的 Calendar)。可以按年、月、周、日、特定日期、Cron表達式排除。
調用 Trigger的 modifiedByCalendar()添加到觸發器中,并且調用調度器的addCalendar()方法注冊排除規則。
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);// 排除中秋節Calendar midAutumn = new GregorianCalendar(2019, 9, 13);holidays.setDayExcluded(midAutumn, true);// 排除圣誕節Calendar christmas = new GregorianCalendar(2019, 12, 25);holidays.setDayExcluded(christmas, true);// 調度器添加日歷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() + " 第一次觸發: " + firstRunTime);} }| BaseCalendar | 為高級的Calendar 實現了基本的功能,實現了org.quartz.Calendar 接口 |
| AnnualCalendar | 排除年中一天或多天 |
| CronCalendar | 日歷的這種實現排除了由給定的CronExpression 表達的時間集合。例如, 您可以使用此日歷使用表達式“* * 0-7,18-23?* *”每天排除所有營業時 間(上午8 點至下午5 點)。如果CronTrigger 具有給定的cron 表達式并 且與具有相同表達式的CronCalendar 相關聯,則日歷將排除觸發器包含的 所有時間,并且它們將彼此抵消。 |
| DailyCalendar | 您可以使用此日歷來排除營業時間(上午8 點- 5 點)每天。每個 DailyCalendar 僅允許指定單個時間范圍,并且該時間范圍可能不會跨越每 日邊界(即,您不能指定從上午8 點至凌晨5 點的時間范圍)。如果屬 性invertTimeRange 為false(默認),則時間范圍定義觸發器不允許觸發 的時間范圍。如果invertTimeRange 為true,則時間范圍被反轉- 也就是 排除在定義的時間范圍之外的所有時間。 |
| HolidayCalendar | 特別的用于從Trigger 中排除節假日 |
| MonthlyCalendar | 排除月份中的指定數天,例如,可用于排除每月的最后一天 |
| WeeklyCalendar | 排除星期中的任意周幾,例如,可用于排除周末,默認周六和周日 |
?
總結
以上是生活随笔為你收集整理的Quartz框架基于Calendar的排除规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Quartz框架中的Trigger
- 下一篇: Quartz框架中的Scheduler