2015-09-11 3 views
0

Я замечаю, что иногда кварцевый планировщик автоматически приостанавливает выполнение некоторых заданий. Это ошибка или проблема с конфигурацией?Quartz Scheduler приостанавливает работу во время работы при завершении работы?

Все запланированные задания используют CronTrigger.

Я подозреваю, что всякий раз, когда сервер остановлен, возможно, он автоматически приостанавливает работу? У меня есть следующий код для ServletContextListener для завершения работы приложения.

public void shutdownScheduler(Scheduler scheduler) { 
    try { 
     if (null != scheduler) { 
      scheduler.shutdown(); 
     } 
    } catch (Exception e) { 
     log.error(e); 
    } 
} 

Некоторые свойства кварца перечислены ниже ...

org.quartz.scheduler.wrapJobExecutionInUserTransaction = false 
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool 
org.quartz.threadPool.threadCount = 20 
org.quartz.threadPool.threadPriority = 5 
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true 
org.quartz.jobStore.misfireThreshold = 60000 

ответ

1

Да, он переходит в спящий режим по умолчанию. Если вы проверите code, вы увидите, что одно из первых, что делает код после выключения, вызывает функцию standby().

Если вы хотите, чтобы избежать этого behaviur, у вас есть возможность позвонить выключение с параметром:

shutdown(true) 

, который заставит Scheduler ждать выполнения заданий для завершения первого. Подтверждение находится в doc, но не слишком подробно о деталях, к сожалению.

+0

Но он не поднимает «jobPaused», что является основной проблемой для меня. – gpa

+0

Что вы подразумеваете под "raise jobPaused"? –

+0

Архитектура текущего продукта находится вокруг 'SchedulerListener', и есть другая логика локального продукта, которая должна быть выполнена, если SchedulerListener.jobPaused поднят Quartz Scheduler. Похоже, что Кварц поднимает это промежуточно. – gpa

Смежные вопросы