Динамическое обновление расписания и заданий без остановки сервера

#java #cron #crontrigger

Вопрос:

Мне нужна помощь в экстернализации приведенного ниже расписания cron или его динамическом выполнении. Например, в приведенном ниже коде жестко прописано выполнение каждую субботу: расписание(«0 0 12 ? * СБ»). Я хочу, чтобы значение внутри cronSchedule() было внешним, чтобы даже после запуска сервера я все равно мог изменить расписание cron на понедельник или каждый день по своему выбору, и его можно было запускать. Я ищу предложения на java, а не весной.

 public void run() throws Exception {
        // Getting a reference to a scheduler
        SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler sched = sf.getScheduler();
        // job will run every week at Saturday 12 Noon Server Time
        JobDetail job = newJob(CachingJob.class).withIdentity("job1", "group1").build();
        CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0 0 12 ? * SAT"))
                .build();
        Date ft = sched.scheduleJob(job, trigger);
        sched.start();
        SchedulerMetaData metaData = sched.getMetaData();
    }
 

Любой вклад или предложение приветствуются.

Ответ №1:

Мы можем выполнить следующий метод, чтобы перенести задание :

 cronScheduler.rescheduleJob(cronTrigger.getKey(), newTrigger().withIdentity("customTrigger", "defaultGroup")
                       .withSchedule(cronSchedule(cronExpression)).build());