处理嵌入在windows服务中的Quartz.NET调度程序的异常

时间:2011-11-07 18:28:07

标签: .net windows-services quartz.net

我正在使用Quartz.NET作为我的Windows服务的嵌入式调度程序。

Quartz配置为使用AdoJobStore,每当SQL服务器因任何原因不可用时,Quartz会抛出Quartz.JobPersistenceException异常,这会导致我的Windows服务无效。

显然,Quartz IScheduler已经实例化,并且从try...catch我的服务OnStart内的IScheudler块内启动,但一旦catch启动并运行任何异常抛出通过Quartz不再被ConnectionAndTransactionHolder块捕获......

欢迎任何关于如何防止Quartz异常在这种情况下杀死我的Windows服务的想法......

我知道我可以将服务设置为在服务的“恢复”选项卡中崩溃后重新启动,但它是一个补丁,而不是真正的解决方案......

编辑:

当方法无法获取并打开数据库连接或对JobStoreSupport的调用失败时,会从Quartz.NET库的BeginTransaction类的JobPersistenceException方法中抛出这些异常。由于Quartz.NET是开源的,我可以访问这些代码,我可以只注释抛出这些{{1}}异常的代码,但是没有详细分析Quartz.NET的源代码我不知道会有什么影响如果Quartz继续尝试扫描触发器,直到数据库连接再次可用,那么...我也不确定许可协议是否允许修改源代码......

0 个答案:

没有答案