Обработка исключений планировщика Quartz.NET, встроенного в службу Windows - PullRequest
1 голос
/ 07 ноября 2011

Я использую Quartz.NET в качестве встроенного планировщика для моей службы Windows.

Quartz настроен на использование AdoJobStore, и каждый раз, когда сервер SQL по какой-либо причине недоступен, Quartz генерирует исключение Quartz.JobPersistenceException, которое убивает мою службу Windows.

Очевидно, что Quartz IScheduler создается и запускается изнутри блока try...catch из OnStart моего сервиса, но после запуска IScheudler все исключения, выданные Quartz, больше не перехватываются этим. catch блок ...

Любые идеи о том, как предотвратить исключения Quartz моей службы Windows в этом сценарии, приветствуются ...

Мне известно, что я могу настроить перезапуск службы после сбоя на вкладке Восстановление службы, но это исправление, а не решение ...

EDIT:

Эти исключения вызываются из метода ConnectionAndTransactionHolder класса JobStoreSupport библиотеки Quartz.NET, когда метод не может получить и открыть соединение с БД или не удается вызвать BeginTransaction. Поскольку Quartz.NET является открытым исходным кодом, и у меня есть доступ к этому коду, я могу просто закомментировать код, который выдает эти JobPersistenceException исключения, но без подробного анализа исходного кода Quartz.NET, я понятия не имею, какой эффект это даст, если Quartz продолжит пытаться сканировать триггеры, пока соединение с БД не станет снова доступным или нет ... также я не уверен, что лицензионное соглашение разрешит любую модификацию исходного кода ...

...