java кварцевый планировщик уволить новую работу немедленно

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

Заранее спасибо.

3 ответа

Решение

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

//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 это экземпляр планировщика, используемый в вашем приложении. Его метод start() должен быть вызван уже после его создания.

  • Задание является долговременным заданием, которое не может прикрепить к нему никакие триггеры или cron. Оно может быть запущено программно только путем вызова triggerJob(JobKey jobKey).

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

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

Вы можете создать "JobKey" на лету с помощью двух ключевых значений строки.

IScheduler sched = /* however you get your scheduler*/;

sched.TriggerJob(new JobKey("myname", "mygroup"));
Другие вопросы по тегам