我们的系统使用 Quartz.Net 进行调度,并且有多种类型的作业(例如:作业类型 A、作业类型 B、作业类型 C)。我们希望避免某些类型的作业同时运行:
- 场景一:A 类作业不能与其他 A 类作业同时运行。
- 场景 2:类型 B 的作业不能与类型 C 的作业同时运行。(如果发生这种情况,那么我们希望 C 作业“等待”直到 B 作业完成)
我知道我可以使用该DisallowConcurrentExecutionAttribute
属性来实现场景 1。但我不知道如何使用内置的 Quartz.Net 功能来实现场景 2。
我可以将工作线程的数量限制为 1,但这会杀死所有并发,这是不希望的。(允许 A 作业与 B 作业同时运行)
当然,我可以在作业中编写此逻辑,但最好我不希望 B 类作业知道 C 类作业。