java кварцевый планировщик уволить новую работу немедленно - PullRequest
28 голосов
/ 27 марта 2012

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

Заранее благодарен.

Ответы [ 3 ]

50 голосов
/ 28 марта 2012

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

    String jobName = ""; // Your Job Name
    String groupName = ""; // Your Job Group
    Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity(jobName, groupName)
                .startNow()
                .build();
28 голосов
/ 27 марта 2012

Все задания, зарегистрированные в Quartz Scheduler , однозначно идентифицируются с помощью 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) .

0 голосов
/ 02 февраля 2018

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

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

sched.TriggerJob(new JobKey("myname", "mygroup"));
...