首页 > 解决方案 > Java Quartz-时间之间的调度器

问题描述

我有一份工作,我想在每天的特定时间(例如上午 8 点至上午 10 点,间隔 5 分钟)开始使用石英调度程序(v2.1.5),不使用 cron 表达式,只使用本机方法。(通过我理解的本地方法在该石英库中实现)。我有触发器:

TriggerBuilder builder = TriggerBuilder.newTrigger()
                .withIdentity(name, group)
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInMilliseconds(interval)
                        .repeatForever());

当然,cron 表达式很困难,我可以使用它来代替。但无论如何,我只想知道是否可以在该问题中使用本机方法。乐于接受任何建议!

标签: javaquartz-scheduler

解决方案


这是Quartz 教程中的一个示例(稍作修改):

var cal = new DailyCalendar(8, 0, 0, 0, 10, 0, 0, 0); // range start and end hours, minutes, seconds and millis
cal.setInvertTimerange(true); // by default the date interval specified above is excluded from execution. 
// This turns it around and only allows execution within the interval

var t2 = TriggerBuilder.newTrigger()
    .withIdentity("myTrigger2")
    .forJob("myJob2")
    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInMilliseconds(interval)
                    .repeatForever());
    .modifiedByCalendar(cal)
    .build();

诀窍是有一个简单的触发器(如上面所示),然后有一个日历实现,可以指定允许执行该触发器的时间。


推荐阅读