回到顶部

Quartz.NET 2.x 文档翻译 - Lesson 10:Configuration, Resource Usage 和 SchedulerFactory

时间:2年前   作者:请喊我大龙哥   浏览:194   [站内原创,转载请注明出处]

Quartz.NET 2.x 文档翻译 - Lesson 10:Configuration, Resource Usage 和 SchedulerFactory 查看官网英文原文

返回目录

Quartz使用模块化的架构方式,从而使其运行,几个组件组合在一起,幸运的是有些东西促成了这个组合。

Quartz工作前需要配置好以下主要组件:

  1. ThreadPool
  2. JobStore
  3. DataSources (if necessary)
  4. The Scheduler itself
ThreadPool在Quartz运行job任务的时候提供Threads支持,线程池线程越多,可以同时运行执行的job任务也就越多,但是过多的线程可能会使我们的系统变慢。通常来说对于Quartz而言,5个左右的线程就已经足够使用了,因为一般情况下执行的job数少于100个,而且job的执行直接一般不是在同一时间,而且单一job的执行时间也不是很长。也有的时候我们需要10,15,50,甚至更多的线程来保证我们执行成千上万的Trigger并在指定时间执行10-100个job任务。为我们的调度程序池的正确大小完全取决于我们使用的调度程序情况。这没有固定的规则,我们除了尽量保持尽量小的线程数量,还需要保证有足够的实际来执行我们的job任务。需要注意的是,如果一个Trigger触发器需要执行了,但是没有可用的空闲可用线程,Quartz就会锁定(暂停)这个Trigger直到有可用线程进行处理,然后这个job任务就会被执行,这就会晚于我们制定的时间点。这样也有可能导致misfire情况的发生,比如我们在scheduler配置的时候设置“misfire threshold”。

IThreadPool接口定义在Quartz.Spi命名空间,我们也可以创建IThreadPool接口的实现。有一个线程池,叫做Quartz.Simpl.SimpleThreadPool,这个IThreadPool实现是一个固定不变的线程设置不增不减,不过即使这样也是非常强大的,也比较容易测试,因为只要我们使用quartz,都会用到这个线程池。

JobStores 和 DataSrouces我们在第九章讨论过了,事实上所有的JobStores都是实现了IJobStore接口,但是如果JobStores并不适用于我们的需求和业务,我们也可以自己做的jobstore。

最后,我们需要创建我们的Scheduler实例,但是要有JobStore 和 ThreadPool。

StdSchedulerFactory

StdSchedulerFactory是一个ISchedulerFactory接口的实现,它使用一组属性(NameValueCollection)来创建和实例化Quartz Scheduler。属性通常存储在一个文件并进行加载,但是也可以由我们的程序创建并传递给factory,只是要求在factory调用getScheduler()方法来创建一个scheduler,初始化scheduler(及其ThreadPool, JobStore 和 DataSources),然后返回其一个处理程序通过其公共接口。

有一些简单的配置(包括属性的描述)在Quartz文件夹的“docs/config”目录下,我们可以参考Quartz的配置手册进行处理。

DirectSchedulerFactory

DirectSchedulerFactory是另外一个SchedulerFactory实例,在我们想要程序化创建Scheduler实例的时候需要用到,一般在以下情况使用:
(1)我们需要知道quartz怎么运行工作等我们需要深入的情况
(2)不允许进行声明配置

Logging

Quartz.NET使用Common.Logging框架来满足log需要,Quartz不会产生很多的log信息,一般是在初始化过程产生log信息,还有就是那些jog被执行的log信息,为了保证我们程序的log产生,我们也需要先了解Commmon.Logging框架,具体可以参照Common.Logging的文档。

返回目录

请喊我大龙哥最后编辑于:2年前

内容均为作者独立观点,不代表八零IT人立场,如涉及侵权,请及时告知。

评论努力加载中...
暂无评论
暂无评论

手机扫码阅读

热门相关

加载中...
关于我们   联系我们   申请友链   赞助记录   站点地图
© 2014 - 2017 www.80iter.com All Rights Reserved. 京ICP备14042174号-1
本站遵循 CC BY 4.0 协议,转载请注明出处 。