Quartz .NET 2.x可以配置具有不同线程池的调度程序

时间:2018-04-11 09:53:42

标签: quartz-scheduler quartz.net

我是Quartz .NET的新手。我使用的是2.6版本。 我有2种工作,低优先级和高优先级。我只想要一个线程池用于高优先级的工作。 有没有办法配置调度程序来处理这个?

由于

1 个答案:

答案 0 :(得分:1)

  

我想要一个仅用于高优先级作业的线程池。

ThreadPool为Quartz提供了一组在执行Jobs时使用的线程。当有一个新作业时,它应该在石英线程池的线程中执行,这个线程只能来自Quartz Thread Pool。

您可能拥有多少个线程池:每个Quartz调度程序实例只允许您创建一个线程池,并且此调度程序实例中的所有作业都将在此池中运行。

因此您可以创建许多Quartz调度程序实例,从而分离您的作业。

注意:线程池大小,线程系统优先级和池实现可以是modified/replaced。要提供自己的实现,您需要一个派生自IThreadPool interface

的类
    /// Execute the given <see cref="Task" /> in the next
    /// available <see cref="Thread" />.
    bool RunInThread(Func<Task> runnable);

来自docs:Quartz附带一个名为Quartz.Simpl.SimpleThreadPool的简单(但非常令人满意)的线程池。这个IThreadPool实现只是在其池中维护一组固定的线程 - 永不增长,永不收缩。但它非常强大并且经过了很好的测试 - 几乎所有使用Quartz的人都使用这个池。