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"));