Quartz以模块化方式构建,因此为了让它运行,需要将多个组件“拼凑”在一起。幸运的是,有一些帮助者可以做到这一点。
在Quartz开始工作之前需要配置的主要组件是:
- 线程池
- 作业存储
- 数据源(如有必要)
- 调度程序本身
自引入基于任务的作业以来,线程池变化很大。TODO document more
本教程的第9课讨论了JobStores和DataSrouces。值得一提的是,所有JobStores都实现了IJobStore接口 - 如果其中一个捆绑的JobStore不适合您的需求,那么您可以自己创建。
最后,您需要创建您的调度程序实例。调度程序本身需要被赋予一个名字并递交一个JobStore和ThreadPool的实例。
StdSchedulerFactory
StdSchedulerFactory是ISchedulerFactory接口的一个实现。它使用一组属性(NameValueCollection)来创建和初始化Quartz Scheduler。这些属性通常存储在文件中并从文件加载,但也可以由程序创建并直接传送到工厂。只需在工厂调用getScheduler()将生成调度程序,对其进行初始化(以及其ThreadPool,JobStore和DataSources),并返回其公共接口的句柄。
Quartz发行版的“docs/config”目录中有一些示例配置(包括属性的说明)。您可以在Quartz文档的“Reference”部分的“Configuration”手册中找到完整的文档。
DirectSchedulerFactory
DirectSchedulerFactory是另一个SchedulerFactory实现。对于那些希望以更加程序化的方式创建他们的调度程序实例的人来说很有用。一般不鼓励使用它,原因如下:(1)它需要用户更好地理解他们在做什么,(2)它不允许进行明确的配置 - 或者换句话说,你最终很难 - 编码所有调度程序的设置。
记录
Quartz.NET使用LibLob库来满足所有的日志需求。Quartz不会产生太多的日志信息 - 通常只是初始化期间的一些信息,然后只是在执行作业时发出严重问题的消息。为了“调整”日志记录设置(例如输出量和输出位置),您需要实际配置您选择的日志框架,因为LibLog主要将工作委派给更完整的日志框架,如log4net, serilog等
请参阅LibLog Wiki获取更多信息。