I want to run certain job every 30 minutes. So far, I have added logic for the same. But, I have validation - It shouldn't run on Sunday from 00:00 to 10:00 CST.
I am stuck on the validation part. Can anyone help?
Below is the code -
package com.quartz;
import java.util.Calendar;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class TriggerCron
{
public static void main( String[] args ) throws Exception
{
Calendar calObj = Calendar.getInstance();
if (calObj.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
{
return;
}
// Job Details
JobDetail job = JobBuilder.newJob(TriggerJob.class)
.withIdentity("JobName", "group1").build();
// Simple Trigger
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("TriggerName", "group1")
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInMinutes(30).repeatForever())
.build();
//Schedule it
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
答案 0 :(得分:0)
if条件应该在TriggerJob中,而不是设置作业的主要方法。
无论如何,这不是正确的设置方式,因为现在调度条件在作业本身。我建议使用多个cron触发器:
时区可以通过以下方式设置:
withSchedule(cronSchedule(cronExpression).inTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))