当前作业完成后关闭 Quartz 调度程序
Shutdown Quartz scheduler after current jobs complete
我在 Windows 服务中使用 Quartz 进行作业调度。当服务停止或用户更改作业运行频率时,我需要关闭调度程序。因为我想等待执行作业,所以我使用
scheduler.Shutdown(true);
我在这两种情况下都遇到了异常:
Quartz.UnableToInterruptJobException: Job 'myJob' can not be
interrupted, since it does not implement Quartz.IInterruptableJob
无法停止 运行 服务,这很糟糕。
但是作业中断意味着不等待作业完成?所以,不是我想要的?虽然它会解决当前的异常问题。
不导致 shutdown
崩溃的正确实施是什么?
如果我真的需要实现 IInterruptableJob,这是怎么做到的?我没有找到关于此的教程,而且我真的不想做任何与标准关机不同的事情。我正在使用标准调度程序工厂来创建调度程序:
schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();
我找到了中断作业的方法...我只需要实现 IInteruptableJob
接口,而 interrupt
方法什么也不做。 post 对我帮助很大!
我在 Windows 服务中使用 Quartz 进行作业调度。当服务停止或用户更改作业运行频率时,我需要关闭调度程序。因为我想等待执行作业,所以我使用
scheduler.Shutdown(true);
我在这两种情况下都遇到了异常:
Quartz.UnableToInterruptJobException: Job 'myJob' can not be interrupted, since it does not implement Quartz.IInterruptableJob
无法停止 运行 服务,这很糟糕。
但是作业中断意味着不等待作业完成?所以,不是我想要的?虽然它会解决当前的异常问题。
不导致 shutdown
崩溃的正确实施是什么?
如果我真的需要实现 IInterruptableJob,这是怎么做到的?我没有找到关于此的教程,而且我真的不想做任何与标准关机不同的事情。我正在使用标准调度程序工厂来创建调度程序:
schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();
我找到了中断作业的方法...我只需要实现 IInteruptableJob
接口,而 interrupt
方法什么也不做。