Java 石英调度器之间的时间间隔
我正在使用quartz scheduler安排作业。我有一个案例,从每天晚上(9:00 PM)到第二天早上(06:00 am)执行作业。我如何实现这一点。目前我正在像这样初始化触发器Java 石英调度器之间的时间间隔,java,quartz-scheduler,scheduler,crontrigger,Java,Quartz Scheduler,Scheduler,Crontrigger,我正在使用quartz scheduler安排作业。我有一个案例,从每天晚上(9:00 PM)到第二天早上(06:00 am)执行作业。我如何实现这一点。目前我正在像这样初始化触发器 Trigger trigger2 = newTrigger() .withIdentity("trigger1", "group1") .startNow() .withSchedule(simpleSchedule() .withIntervalInSe
Trigger trigger2 = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
我需要做哪些修改才能满足要求?这里有一个参考,您可以使用此参考来安排使用quartz的时间。 这部分可能对你有帮助
JobDetail jDetail = new JobDetail("Newsletter", "NJob", MyJob.class);
//"0 0 12 * * ?" Fire at 12pm (noon) every day
//"0/2 * * * * ?" Fire at every 2 seconds every day
CronTrigger crTrigger = new CronTrigger("cronTrigger", "NJob", "0/2 * * * * ?");
如果您选择了,您可以使用如下表达式
0*21-23,0-5?**代码>每天从早上00:00到早上05:59以及从晚上9:00到晚上23:59每分钟解雇一份工作,因此:
trigger = newTrigger()
.withIdentity("trigger7", "group1")
.withSchedule(cronSchedule("0 * 21-23,0-5 ? * *"))
.build();
记住导入import static org.quartz.CronScheduleBuilder.cronSchedule
频率(在本例中为每分钟)取决于您的要求。如果您需要每天运行一次作业,则只需指定作业的开始时间:
newTrigger().withSchedule(
CronScheduleBuilder.dailyAtHourAndMinute(21,0)).build();
如果计划的作业(数据库处理)需要很多小时,并且可能超过早上6点的时间限制,Quartz scheduler将无法帮助您。石英只是开始工作。你应该在早上6点停止跑步。例如,假设作业是一种方法:
public void doSomeDBOperations() {
while(have more data to process) {
if(Calendar.getInstance().get(Calendar.HOUR_OF_DAY) == 6) {
break;
}
//insert data
}
}
我不想使用crontrigger如果你真的不想使用crontrigger,你可以安排两个不同的24小时间隔,开始时间是晚上9点和早上6点。。我将使用crontrigger..那么CronExpression将如何使用..我对CronExpression感到困惑..有人能帮助您在计划程序中执行什么类型的任务,以便您需要自己停止吗???我正在处理数据库中的数据并插入到新表中。我只想在数据库流量较低的情况下执行..这操作可能需要很长时间。这就是我要指定时间范围的原因