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博客作者张善友的原创作品,如需转载,请注明出处,否则将追究法律责任
职场 休闲 Quartz.net Quartz.net

0

分享

微博 QQ 微信

收藏

上一篇:Quartz.net官方开发指南... 下一篇:Quartz.net官方开发指南...
张善友

502篇文章,102W+人气,0粉丝

Ctrl+Enter 发布

发布

取消

推荐专栏更多

微服务技术架构和大数据治理实战

大数据时代的微服务之路

共18章 | 纯洁微笑

¥51.00 669人订阅

订   阅

基于Python的DevOps实战

自动化运维开发新概念

共20章 | 抚琴煮酒

¥51.00 430人订阅

订   阅

猜你喜欢

我的友情链接 CentOS 7 通过 持续集成包 安装最新的 Mono Java线程:线程的调度-休眠 我们不得不面对的中年职场危机 职场终极密籍--记我的职业生涯 用光影魔术手制作一寸照片(8张一寸) 我的IT职场生涯: 毕业4年,月薪过万 Linux关闭休眠和屏保模式 年薪从0到10万-我的IT职场经验总结 Windows7删除休眠文件hiberfil.sys节省大量C盘空间 致IT同仁 — IT人士常犯的17个职场错误 “跳槽加薪”现象,无奈的职场规则 ASPNetCore MVC ModelValidation-ajax C#如何设置Excel文档保护——工作簿、工作表、单元格 在.NET数据库访问方面的Dapper类库介绍 C#/VB.NET 如何添加、获取、删除PDF附件 C#/VB.NET 创建PDF项目符号列表和多级编号列表 C# /VB.NET 操作Word (一)——插入、修改、删除Word批注 C# 操作Excel数据透视表 微信支付---APP调起微信支付c#后台接口

扫一扫,领取大礼包

0

分享

张善友

转载于:https://blog.51cto.com/shanyou/73986

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

  1. Quartz.net官方开发指南 第五课: SimpleTrigger

    如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在<?xml:namespace prefix = st1 ns = " ...

  2. Quartz.net官方开发指南 第七课 : TriggerListeners和JobListeners

    监听器是在scheduler事件发生时能够执行动作的对象.可以看出,TriggerListeners接收与triggers相关的事件,而JobListeners则接收与Job相关的事件.<?xm ...

  3. Quartz.net官方开发指南 第九课: JobStore

    JobStore负责保持对所有scheduler "工作数据"追踪,这些工作数据包括:job(任务),trigger(触发器),calendar(日历)等.为你的Quartz sc ...

  4. Quartz.net官方开发指南 第二课:Jobs And Triggers

    正如前面所提到的那样,通过实现IJob接口来使你的.NET组件可以很简单地被scheduler执行.下面是IJob接口: namespace Quartz {      /**//// <sum ...

  5. 开发指南专题十六:JEECG微云快速开发平台Excel导出

    开发指南专题十六:JEECG微云快速开发平台Excel导出 14.3.  Excel导出 导出工具类ExcelExportUtil 提供两个函数 //创建多个Sheet public static H ...

  6. 开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍

    开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍 13.MiniDao 介绍 13.1.  MiniDao简介及特征 MiniDao是Jeecg自己的持久化解决方案,具备了Hibern ...

  7. 开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm

    开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm 10.4Validform对象[方法支持链式调用] 如示例 var demo=$(".formsub" ...

  8. 开发指南专题十五 JEECG微云快速开发平台EXCEL导入导出

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴!  开 ...

  9. OpenCart 官方开发指南翻译一 —— 模块开发

    模块开发   编写 OpenCart 模块可以很好地了解 OpenCart 如何运作的基本原理.就像 OpenCart 的其余部分一样,模块遵循 MVCL 设计模式.本文档指南将介绍如何使用 MVC- ...

最新文章

  1. 内存分配器设计的演进
  2. 单纯形法(四)理论部分(终结)
  3. Play框架拾遗之五:其他知识点
  4. php挖洞提权,挖洞经验 | 看我如何发现GitHub提权漏洞获得$10000赏金
  5. mysql errmsg unknown_详解MySQL Server 启动时出现bug的解决方法
  6. JAVA8之lambda表达式
  7. Java基础之多态深入解析
  8. Windows下安装Mysql5.7.22以及遇到的问题 + 数据库连接工具Navicat
  9. 589-N叉树的前序遍历
  10. python中yield的用法详解——最简单,最清晰的解释(转载)
  11. mysql数据去重_mysql 数据去重
  12. Http压力测试之ab
  13. 前端安全 -- XSS攻击
  14. python在财务中的应用-Python用于财务工作培训
  15. openstack常见问题解决方法
  16. 最新资料!工银亚洲开户见证业务受理网点(广东地区,除了深圳)
  17. php pc无法登录失败,window_win7系统在局域网共享文件提示登录失败用户账户限制的故障原因及解决方法,win7操作系统在局域网共享文件 - phpStudy...
  18. mysql2014汉化版_SQLServer2014企业版下载
  19. 所爱隔山海,山海皆可平
  20. phpstorm 配置 Xdebug 调试

热门文章

  1. nginx调用PHP有sock方式和端口方式
  2. linux中使用scp远程拷贝文件及文件夹
  3. 【项目管理】Project使用
  4. iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
  5. 浏览器是怎样工作的(一):基础知识
  6. DXperience_v9.15简体中文
  7. JavaScript常用判断函数 [转]
  8. Deepin 解决google chrome卡顿的问题
  9. 校园二手平台的开发和利用
  10. SpreadJS 在 Angular2 中支持绑定哪些属性?