目录

Quartz 快速指南

目录
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();

Scheduler sched = schedFact.getScheduler();

sched.start();

// define the job and tie it to our DumbJob class
JobDetail job = newJob(DumbJob.class)
  .withIdentity("myJob", "group1") // name "myJob", group "group1"
  .usingJobData("jobSays", "Hello World!")
  .usingJobData("myFloatValue", 3.141f)
  .build();

// Trigger the job to run now, and then every 40 seconds
Trigger trigger = newTrigger()  // from TriggerBuilder
  .withIdentity("myTrigger", "group1")
  .startNow()
  .withSchedule(simpleSchedule()  // from  SimpleScheduleBulder
                .withIntervalInSeconds(40)
                .repeatForever())
  .build();

// Tell quartz to schedule the job using our trigger
sched.scheduleJob(job, trigger);
// 自动注入
public class DumbJob implements Job {

  String jobSays;
  float myFloatValue;
  ArrayList state;

  public DumbJob() {
  }

  public void execute(JobExecutionContext context)
    throws JobExecutionException
  {
    JobKey key = context.getJobDetail().getKey();

    JobDataMap dataMap = context.getMergedJobDataMap();  // 注意 merge
		
    // 如果不是自动注入的写法,没有这些属性的话,应该这样写
    String jobSays = dataMap.getString("jobSays");
    float myFloatValue = dataMap.getFloat("myFloatValue");
    
    state.add(new Date());

    System.err.println("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
  }

  public void setJobSays(String jobSays) {
    this.jobSays = jobSays;
  }

  public void setMyFloatValue(float myFloatValue) {
    myFloatValue = myFloatValue;
  }

  public void setState(ArrayList state) {
    state = state;
  }
}
.withIdentity("trigger3", "group1")
.startAt(futureDate(5, IntervalUnit.MINUTE)) // use DateBuilder to create a date in the future
.withSchedule(cronSchedule("0 0/2 8-17 * * ?"))
.forJob("myJob", "group1")
.inTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
.endAt(dateOf(22, 0, 0))
.modifiedByCalendar("myHolidays") // but not on holidays
.usingJobData("jobSays", "Hello World!")
.build();
.withSchedule(simpleSchedule()
                .withIntervalInMinutes(5)
                .repeatForever()
                .withMisfireHandlingInstructionNextWithExistingCount())
.withSchedule(dailyAtHourAndMinute(10, 42))  // cronSchedule("0 42 10 * * ?")

.withSchedule(cronSchedule("0 0/2 8-17 * * ?")
        .withMisfireHandlingInstructionFireAndProceed())