Подтвердить что ты не робот

Java-кварцевый планировщик немедленно запускает новое задание

Можно ли создать задание, которое будет запускаться немедленно? когда я хочу, чтобы задание было триггером, теперь я создал строку выражения cron с текущей датой и временем - я думаю, что это слишком сложно, есть ли другой способ немедленно запустить задание?

Спасибо заранее.

4b9b3361

Ответ 1

Все вакансии, зарегистрированные в Quartz Scheduler, однозначно идентифицируются JobKey, который состоит из имени и группы. Вы можете запустить задание, которое имеет данный JobKey, вызывая triggerJob (JobKey jobKey) вашего экземпляра Scheduler.

//Create a new Job 
JobKey jobKey = JobKey.jobKey("myNewJob", "myJobGroup");
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity(jobKey).storeDurably().build();

//Register this job to the scheduler
scheduler.addJob(job, true);

//Immediately fire the Job MyJob.class
scheduler.triggerJob(jobKey);

Примечание:

  • scheduler - это экземпляр Scheduler, используемый во всем приложении. Его метод start() должен быть вызван после его создания.

  • Задача - это долговременное задание, которое не может подключать к нему триггеры или cron. Его можно запускать только программным путем, вызывая triggerJob (JobKey jobKey).

Ответ 2

Да, используйте следующий Trigger, чтобы немедленно запустить вашу работу, а не ждать выражения Cron.

    String jobName = ""; // Your Job Name
    String groupName = ""; // Your Job Group
    Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity(jobName, groupName)
                .startNow()
                .build();