2013-04-23 4 views
6

Учитывая работу кварца и следующую командуКварц не может удалить работу, что теперь?

boolean deleted = scheduler.deleteJob(event.getName(), "some group name") 

Допуская deleted возвращается как false, как я понимаю, это означает, что с точки стенд виртуальной машины Java, работа по-прежнему существует.

С этим 2 вопроса:

  1. Можно ли заставить удалить задание?
  2. Какое событие предотвращает удаление кварца?

Если исключение не выбрасывается, можно ли предположить, что работа не была найдена? Что может вызвать это? Разве это не единственный способ для этого - удалить работу на первом месте?

Я использую

<dependency> 
     <groupId>org.quartz-scheduler</groupId> 
     <artifactId>quartz</artifactId> 
     <version>1.8.0</version> 
    </dependency> 

ли этот удар вы, как правильно обращаться с вещами? Правильно ли я рассуждаю?

boolean deleted; 
    try { 
     deleted = scheduler.deleteJob(event.getName(), "some group name"); 
     if (!deleted) { 
      logger.warn("Quartz failed to delete the job!" + event.getName() + ". Job not found"); 
     } 
    } catch (SchedulerException e) { 
     logger.error("There is an internal Scheduler error", e); 
    } 
+0

одна из причин, почему я не был в состоянии удалить задание было я давал неверное значение работы группы. – Mateen

ответ

6
  1. Да, вы уже делаете это.
  2. Работа в данный момент запущена.

Если вам нужно удалить работу во время ее работы, убедитесь, что ваша работа реализует org.quartz.InterruptableJob. Затем вы можете вызвать org.quartz.Scheduler.interrupt (JobKey), чтобы остановить его во время его работы.

Попробуйте добавить catch для общего исключения после вашего SchedulerException (лучше обработать исключения, и если вы не уверены в ошибках, которые вы можете получить, это поможет вам).

Также имейте в виду, что при построении кварцевого задания вы можете использовать jobBuilder.storeDurably (false), что приведет к автоматическому удалению вашего задания кварца, если к нему больше не подключен активный триггер.

0

во время планирования задания устанавливается ниже одного

job.getJobDataMap().put("JOB_NUMBER",input); 
      job.getJobDataMap().put("TRIGGER_NAME",input); 

In Выполнение Работа Действие

TriggerKey triggerKey = new TriggerKey(jobCtx.getMergedJobDataMap().get("TRIGGER_NAME").toString(),jobCtx.getMergedJobDataMap().get("TRIGGER_NAME").toString()); 
//condition 
scheduler.unscheduleJob(triggerKey); 
scheduler.deleteJob(JobKey.jobKey(jobCtx.getMergedJobDataMap().get("JOB_NUMBER").toString(),jobCtx.getMergedJobDataMap().get("JOB_NUMBER").toString()));