我们的系统使用Quartz.Net进行调度,并具有多种类型的作业(例如:作业类型A,作业类型B,作业类型C)。我们希望避免某些类型的作业同时运行:
我知道我可以使用DisallowConcurrentExecutionAttribute
属性来实现方案1.但我无法弄清楚如何使用内置的Quartz.Net功能实现方案2。
我可以将工作线程的数量限制为1,但这会导致所有并发性死亡,这是不受欢迎的。 (允许作业与B作业同时运行)
当然我可以在作业中编写这个逻辑,但最好不要让B类作业知道C类作业。
答案 0 :(得分:2)
您可以为B和C作业创建单独的调度程序,并将其配置为在其池中包含1个线程。来自How can I set the number of threads in the Quartz.NET threadpool SO回答:
var properties = new NameValueCollection { {"quartz.threadPool.threadCount", "1"} };
var schedulerFactory = new StdSchedulerFactory(properties);
var scheduler = schedulerFactory.GetScheduler();