Quartz.net官方开发指南 第十课: 配置、资源使用以及SchedulerFactory-阿里云开发者社区

开发者社区> 余二五> 正文

Quartz.net官方开发指南 第十课: 配置、资源使用以及SchedulerFactory

简介:
+关注继续查看
   Quartz以模块方式构架,因此,要使它运行,几个组件必须很好的咬合在一起。幸运的是,已经有了一些现存的助手可以完成这些工作。
在Quartz进行工作之前需要被配置的组件主要有:
• ThreadPool 线程池
• JobStore
• DataSources (如果需要)
• Scheduler本身
ThreadPool(线程池)为Quartz运行任务时提供了一些线程。池中的线程越多,那么并发运行的任务数就越多。但是,过多的线程会降低系统的运行速度。大多数用户发现5个或者相近的线程就已经足够了,因为任何给定的时间段内都不超过100个任务要运行,而且这些任务不会在同一时刻运行,同时任务活动时间很短(很快就结束了)。其他的用户发现需要10,15,50,甚至100个线程,因为每个schedules都有成千上万的触发器,并且在给定的时刻会有平均10到100个任务在运行。确定schedule的线程池中的线程数量的合理值取决于用scheduler来做什么。除了尽可能少地设置线程数量,使得任务执行时线程够用外(由于计算机资源的有限性),没有其他实用的准则。注意:如果触发器触发的时间到了,却没有可用的线程,那么Quartz将会让这个任务等待,直到有线程可用。这样,任务的执行将比它因该执行的时间晚一些毫秒。如果scheduler的配置的“未触发极限”时限中仍然没有线程可用,这甚至会导致“未触发(misfire)”。
ThreadPool接口定义在org.quartz.spi中,你也可以创建一个自己的ThreadPool(线程池)实现,Quartz打包了一个简单(但非常满意的)的线程池,名为:org.quartz.simpl.SimpleThreadPool,这个线程池只是简单地在它的池中保持固定数量的线程,不增长也不缩小。但是它非常健壮且经过良好的测试,差不多每个Quartz用户都使用这个池。
JobStoresDataSrouces在第九课中已经讨论过,值得注意的一个事实是所有的JobStores都实现了IJobStore接口,如果捆绑的JobStores不能满足你的要求,你可以自己开发一个。
JobStores
最后你需要创建自己的Scheduler实例。Scheduler本身需要给定一个名字处理的JobStore和ThreadPool实例。
StdSchedulerFactory
StdSchedulerFactory是对org.quartz.SchedulerFactory接口的一个实现。是使用一套属性(NameValueCollection)来创建和初始化Quartz Scheduler。这些属性通常在文件中存储和加载。也可以通过编写程序来直接操作工厂。简单地调用工厂的getScheduler()就可以产生一个scheduler,初始化(以及它的ThreadPool、JobStore和DataSources),并且返回一个公共的接口。
DirectSchedulerFactory
DirectSchedulerFactory是SchedulerFactory的另一个实现。它对于那些希望用更加程序化的方式创建Scheduler非常有用。不鼓励使用它的原因如下:
(1) 它需要用户非常了解他们想要干什么。
(2) 它不允许声明式的配置。换句话说,它使用硬编码的方式设置scheduler。
Logging 日志
Quartz用Common.Logging framework架来满足它所有的日志需要。Quartz不会产生太多的日志信息,通常只是一些初始化信息以及只有在任务执行时发生的一些严重问题的信息。要“调整”日志设置(例如输出量以及在哪输出),需要理解Common.Logging framework框架,这不在本文档的讨论范围内。





本文转自 张善友 51CTO博客,原文链接:http://blog.51cto.com/shanyou/73986,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )(一)
【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )(一)
5 0
IOS开发应用之Quartz 2D学习指南
引用:http://mobile.51cto.com/iphone-284414.htm IOS开发应用之Quartz 2D学习指南是本文要介绍的内容,主要是来学习Quartz 2D的使用方法和操作。
746 0
技能学习:学习使用node.js + vue.js,开发前端全栈网站-1.工具和本地环境
Node.js 运行环境是引领前端开发人员的“一道光”,让前端开发人员**仅**利用已掌握的 js 语言就可以实现对网站服务器环境的搭建与运行。打破了以往前后端分工合作、交流对接的惯性习惯。 相对于传统PHP、JAVA开发,Node.js 附带的npm更方便、快捷地让前端开发人员更快、更方便地使用和获取其他前端大神封装好的 js 类库和精美UI样式库,舍去不同语言和不同编码的切换过程。
223 0
使用Express3.0实现<Node.js开发指南>中的微博系统
特别说明:本实例仅在windows xp sp3系统下测试通过(其它系统未经过测试)。 这本书,之前有评论过,但之前并不清楚express2.x与3.x会有如此大的差异,导致在写例子的过程中痛苦不已。
814 0
在windows平台下使用vscode当golang开发环境的配置
一、使用的平台与软件: 1、window 7 或者10,注意必须是64位,否则不能使用delve debug 2、go1.11.5.windows-amd64.msi 3、Git-2.20.1-64-bit.exe 4、VSCodeUserSetup-x64-1.31.1.exe 二、安装git,golang,vscode git软件全部使用缺省配置即可,安装完成后也不需要做太多配置; golang一般缺省安装在C:\go下 重点是需要设置GOPATH的环境变量。
2810 0
Linux 中查看进程及资源使用情况
Linux 中查看进程及资源使用情况自带的 top 命令类似于平时我们使用的任务管理器,能够列出当前系统中的进程及资源的使用情况。 $ man top top - display Linux tasks 使用起来很简单,不加任何参数的情况下已经很实用了。
1998 0
Asp.Net Web API 2第十课——使用OWIN自承载Web API
原文:Asp.Net Web API 2第十课——使用OWIN自承载Web API 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本教程主要来展示在控制台应用程序中如何通过OWIN来承载Web API。
1068 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载