1、介绍
今天是这个系列的最后一篇文章了,主要功能说的差很少了,咱们来看看其余相关的内容。话说回来,虽然是这个系列的最后一篇文章,并不表明Quartz的东西就这么点,学习阶段,就这些了,若是之后有了使用心得,再增长进来。废话少说,开始咱们今天的学习吧。
2、Quartz.Net其余功能
Quartz以模块化方式构建,所以要使其运行,须要将几个组件“拼接”在一块儿。 幸运的是,有一些助手能够实现这一目标。
在Quartz能够完成其工做以前须要配置的主要组件是:
1)、ThreadPool
2)、JobStore
3)、数据源(若有必要)
4)、调度程序自己
自从引入基于任务的做业以来,线程池已经发生了很大变化。 TODO文档更多
JobStores 和 DataSrouces 在本教程的第9课中进行了讨论。 值得注意的是,全部 JobStores 都实现了 IJobStore 接口 - 若是其中一个捆绑的JobStore不能知足您的需求,那么您能够建立本身的。
最后,您须要建立Scheduler实例。 须要为Scheduler自己指定一个名称并交给JobStore和ThreadPool的实例。
一、StdSchedulerFactory
StdSchedulerFactory 是 ISchedulerFactory 接口的实现。 它使用一组属性(NameValueCollection)来建立和初始化Quartz Scheduler。 这些属性一般存储在文件中并从文件中加载,但也能够由程序建立并直接传递给工厂。 只需在工厂类实例上调用 getScheduler() 就能够生成调度程序,初始化它(及其ThreadPool,JobStore和DataSources),并返回其公共接口的句柄。
Quartz发行版的“docs / config”目录中有一些示例配置(包括属性的描述)。 您能够在Quartz文档的“参考”部分下的“配置”手册中找到完整的文档。
二、DirectSchedulerFactory
DirectSchedulerFactory 是另外一个 SchedulerFactory 实现。 对于那些但愿以更加程序化的方式建立 Scheduler 实例的人来讲,它很是有用。 因为如下缘由,一般不鼓励使用它:(1)它要求用户更好地理解他们正在作什么,以及(2)它不容许声明性配置-或者换句话说,您最终硬编码了调度程序的全部设置。
三、Logging
Quartz.NET 使用 LibLob 库来知足其全部日志记录需求。 Quartz 不会产生不少日志信息——一般只是在初始化期间产生一些信息,而后在 Jobs 执行期间只产生关于严重问题的消息。为了“优化”日志设置(好比输出量和输出位置),您须要实际配置所选择的日志框架,由于 LibLog 主要将工做委托给更成熟的日志框架,如log4net、serilog等。
四、高级(企业)功能
集群:集群目前只适用于 AdoJobstore(JobStoreTX)。功能包括负载平衡和做业故障转移(若是JobDetail的“请求恢复”标志设置为true)。
经过将“quartz.jobStore.clustered”属性设置为“true”来启用群集。 集群中的每一个实例都应使用相同的quartz属性副本。 例外状况是使用相同的属性,具备如下容许的例外:不一样的线程池大小,以及“quartz.scheduler.instanceId”属性的不一样值。 集群中的每一个节点必须具备惟一的instanceId,经过将“AUTO”做为此属性的值放置,能够轻松完成(不须要不一样的属性文件)。
永远不要在不一样的机器上运行群集,除非它们的时钟使用某种形式的时间同步服务(守护进程)进行同步,这些服务按期运行(时钟必须在彼此的秒内)。 若是您不熟悉如何执行此操做,请访问http://www.boulder.nist.gov/timefreq/service/its.htm。
永远不要针对运行任何其余实例的同一组表启动非群集实例。 您可能会收到严重的数据损坏,而且确定会遇到不正常的行为。
五、Quartz.Net 其余功能
1)、Plug-Ins(插件)
Quartz提供了一个接口(ISchedulerPlugin),用于插入附加功能。
Quartz.Plugins 命名空间中能够找到 Quartz 附带的以提供各类实用功能的插件。 它们提供的功能包括在调度程序启动时自动调度做业,记录做业历史记录和触发事件,以及确保调度程序在虚拟机退出时干净地关闭。
2)、JobFactory
触发器触发时,与其关联的Job将经过Scheduler上配置的JobFactory实例化。 默认的JobFactory只是激活做业类的新实例。 您可能但愿建立本身的JobFactory实现来完成诸如让应用程序的IoC或DI容器生成/初始化做业实例之类的事情。
请参阅 IJobFactory 接口和相关的 Scheduler.SetJobFactory(fact)方法。
3)、‘Factory-Shipped’ Jobs(工厂预装的一些有用的任务做业)
Quartz还提供了许多实用工具,您能够在应用程序中使用它们来执行诸如发送电子邮件和调用远程对象之类的操做。 能够在Quartz.Jobs命名空间中找到这些开箱即用的做业。
3、总结
好了,今天就写到这里了。这个系列的内容先暂停吧,之后有好的内容再更新了。仍是老规矩,我把英文原文地址发出来,英文好的能够直接看英文,理解的会更好。地址以下:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/configuration-resource-usage-and-scheduler-factory.html,这篇文章是起始文章,我今天写的这篇文章把后面的全部的内容写在了一块儿。
不忘初心,继续努力。html