Кварцевый планировщик заданий, использующий Java, застрял в режиме ожидания без выполнения задания - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть класс, где я выполняю некоторые действия, и я хочу создать задание, которое будет обрабатывать эту операцию автоматически, например, каждые x минут. Я использую Quartz, этот класс реализует Job, а в своем классе драйверов я создаю свой подробный список заданий, планировщик и триггер, а затем запускаю его. Однако задание не выполняется, информация журнала:

    NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0

Код для планировщика в моем классе драйверов:

try {

        JobDetail job = JobBuilder.newJob(TestMkFPMJob.class).withIdentity("TestMkFPMJob").build();
        Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(Integer.parseInt(strTimeSched)).repeatForever()).build();


        SchedulerFactory schFactory = new StdSchedulerFactory();
        Scheduler sch = schFactory.getScheduler();
        sch.start();
        sch.scheduleJob(job, trigger);

            } 
      catch (SchedulerException e)
      {
        e.printStackTrace();
        System.out.println("Scheduler Error");
      }

С "TestMkFPMJob" в качестве класса задания, где мои операции обработаны, и strTimeSched уже извлечен и установлен как 120, извлеченный из

Я искал похожую проблему, но, похоже, не могу найти какой-либо совет для продвижения вперед, оцените любой. Обратите внимание, что я впервые использую Кварц / Планирование заданий.

1 Ответ

1 голос
/ 08 апреля 2020

Запись в журнале с NOT STARTED вводит в заблуждение, поскольку отображается при создании экземпляра QuartzScheduler. Это не значит, что задания не работают. Он записывается после выполнения строки Scheduler sch = schFactory.getScheduler(); и запуска планировщика в следующей строке.

Если я беру ваш пример и запускаю его на моем p c, он работает так, как задумано:

public class Quartz {

    public static void main(String[] args) {
        try {

            JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myJob").build();
            Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(Integer.parseInt("10")).repeatForever()).build();

            SchedulerFactory schFactory = new StdSchedulerFactory();
            Scheduler sch = schFactory.getScheduler();
            sch.start();
            sch.scheduleJob(job, trigger);

        }
        catch (SchedulerException e)
        {
            e.printStackTrace();
            System.out.println("Scheduler Error");
        }
    }
    public static class MyJob implements Job {
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            System.out.println("runnning job");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...