Search code examples
cronquartz-scheduler

Cron schedule to run at 11:55, 12:00 and 12:05


I am trying to create a Cron schedule to run at 11:55, 12:00 and 12:05 and using follwing expression-

 0 0,5,55 11,12 ? * * *

However above given schedule run at 11:00, 11:05, 11:55, 12:00, 12:05, 12:55. Not sure what I have missed.


Solution

  • You can use 2 triggers to execute YourJob.class.

        public class Scheduler extends GenericServlet {
    
            @Override
            public void init(ServletConfig config) throws ServletException {
                super.init(config);
                try {
                    // this is YOUR job
                    JobDetail job = JobBuilder.newJob(YourJob.class).build();
                    Trigger trigger1 = TriggerBuilder
                            .newTrigger()
                            .forJob(job)
                            .withSchedule(
                                    CronScheduleBuilder.cronSchedule(
                                            "0 55 11 ? * * *"
                                    )
                            ).build();
                    Trigger trigger2 = TriggerBuilder
                            .newTrigger()
                            .forJob(job)
                            .withSchedule(
                                    CronScheduleBuilder.cronSchedule(
                                            "0 0,5 12 ? * * *"
                                    )
                            ).build();
                    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
                    scheduler.start();
                    // run at 11:55 every day
                    scheduler.scheduleJob(job, trigger1);
                    // run at 12:00 and 12:05 every day
                    scheduler.scheduleJob(job, trigger2);
                } catch (SchedulerException e) {
                    Logger.getLogger(Scheduler.class).error(e);
                }
            }
    
            @Override
            public void service(ServletRequest req, ServletResponse res) {
                // ...
            }
        }