简体   繁体   English

使用Quartz的每日作业计划程序

[英]Daily Job scheduler using Quartz

Requirement: 需求:

2015-02-11 to 2015-02-15 / 10:30 to 11:30 job to be execute and when 11:30 time comes it should stop the job it should occur util 15th day comes. 2015-02-11至2015-02-15 / 10:30至11:30要执行的工作,当11:30时间到时,它应该停止该工作,直到第15天到来。

Here I have Quartz 1.8.6 lib, but not able to get right implementation for this. 在这里,我有Quartz 1.8.6 lib,但是无法为此实现正确的实现。 Please help us on this. 请帮助我们。

Sample program: 示例程序:

        SimpleDateFormat    formateDate = new SimpleDateFormat("mm/DD/yyyy HH:mm");         
        SchedulerFactory sf = new StdSchedulerFactory(AppConstants.QUARTZ_PROP_FILE);
        log.info("------- invoking scheduler ----------------------");

        System.out.println("------- invoking scheduler ----------------------");
        Scheduler sched = sf.getScheduler();


        java.util.Calendar startCal = java.util.Calendar.getInstance();
        startCal.setTime(formateDate.parse(startDate));


        java.util.Calendar endCal = java.util.Calendar.getInstance();
        endCal.setTime(formateDate.parse(endDate));


        System.out.println("start/end : " + startCal.getTime() + "/"+endCal.getTime());
        DailyCalendar cal = new DailyCalendar(startTime, endTime);

    //  cal.setTimeRange(startTime, endTime);
        cal.setInvertTimeRange(true);
        Calendar quartzCal = cal;

        sched.addCalendar("quartzCal", quartzCal, true, true);


        //makeDailyTrigger(tgName, 12, 15)
        JobDetail job = new JobDetail(jbName, "Admit", DemandStartJob.class);

        SimpleTrigger trigger=new SimpleTrigger(tgName);
        trigger.setStartTime(startCal.getTime());
        trigger.setEndTime(endCal.getTime());
        trigger.setCalendarName("quartzCal");
        trigger.setJobName(jbName);
        trigger.setJobGroup("Admit");
        trigger.setRepeatCount(0);
        trigger.setRepeatInterval(1);
        sched.scheduleJob(trigger);
        sched.start();

Use the following code to configure Quartz crontrigger 使用以下代码配置Quartz crontrigger

// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();

// Trigger the job to run now, and then repeat every 40 seconds
Trigger  trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(cronSchedule("0 42 10 * * ?"))
.forJob(myJobKey)
.build();

// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);

Here " 0 42 10 * * ? " is the cron expression 这里的“ 0 42 10 * *? ”是cron表达式
use http://www.cronmaker.com/ 使用http://www.cronmaker.com/
to make a cron expression of your need 明确表达您的需求

If you want to stop the thread also configure another job which triggers after 15 minutes to first job. 如果要停止线程,请配置另一个作业,该作业在15分钟后触发至第一个作业。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM