Задание Quartz.NET, настроенное для запуска один раз в день, работает в первый день, но не запускается в последующие дни. - PullRequest
1 голос
/ 28 сентября 2011

Я настроил quartz.net в своем приложении asp.net, и у меня есть задание, которое будет запускаться ежедневно в 1:00.Если я изменяю файл job-config.xml, чтобы задание выполнялось через 2 минуты, изменение автоматически принимается без перезапуска пула приложений, и задание запускается.Однако, если я отменю изменение, чтобы снова запустить работу в час ночи, оно, похоже, не сработает.Очевидной причиной для меня было бы то, что либо пул приложений, либо IIS были перезапущены, что привело бы к завершению работы моего приложения asp.net (по сути, завершение работы quartz.net, поскольку оно является неотъемлемой частью того же asp.net process), но чтобы проверить, работает ли quartz.net, без iisreset или перезапуска пула приложений, я снова изменяю файл job-config.xml, чтобы он снова запускался через 2 минуты, и задание запускается, поэтомуПохоже, это не тот случай, когда произошел перезапуск пула приложений или сброс IIS - я не понимаю.

Я бы хотел, чтобы работа выполнялась под моим приложением asp.net без необходимости создаватьдополнительная служба Windows, поэтому любая помощь будет принята с благодарностью.Ниже приведен фрагмент моего файла конфигурации quartz.net.

<job>
<job-detail>
  <name>xjob</name>
  <group>MyJobs</group>
  <description>blah blah</description>
  <job-type>yyy.xxx,yyy</job-type>
  <volatile>false</volatile>
  <durable>true</durable>
  <recover>false</recover>      
</job-detail>
<trigger>
  <cron>
    <name>xJobTrigger</name>
    <group>MyJobs</group>
    <description>blah blah</description>
    <job-name>xJob</job-name>
    <job-group>MyJobs</job-group>
    <cron-expression>0 0 1 * * ?</cron-expression>
  </cron>      
</trigger>

Спасибо

1 Ответ

1 голос
/ 28 сентября 2011

Я думаю, что происходит несколько вещей.Как вы упомянули, если вы запустите планировщик под asp.net, процесс может быть переработан и ваш планировщик может быть недоступен для запуска задания, когда он должен быть запущен.Если важно, чтобы работа выполнялась в определенное время, вам нужно настроить Quartz.net в качестве службы.

Другая вещь, которой не хватает, - это то, что я думаю, что вы используете разорванные задания ОЗУ, а это означает, что при перезапуске планировщик переназначает задание, поэтому в вашем случае он не будет запускаться снова до 1.Если планировщик не работает на 1, то задание не будет запущено, даже если планировщик перезапустится (и т. Д.).Если вы используете хранилище заданий ADO, то, по крайней мере, триггер будет сохранен, и задание будет запущено после повторного запуска планировщика и обнаружения пропуска зажигания.

...