第10课 配置、资源利用率和SchedulerFactory

Quartz的架构是模块化的,因此要让它运行起来,需要将多个组件整合到一起。幸运地是,已经有一些工具帮助我们实现这个。

在Quartz可以工作之前,需要配置的主要组件有:

  1. ThreadPool
  2. JobStore
  3. DataSource(如果需要的话)
  4. Scheduler自己

ThreadPool为Quartz提供了一组线程用于执行Job。线程池中的线程越多,那么同时执行的Job数量就越大。然而,太多的线程会让系统停顿。大多数的Quartz用户发现大约5个线程就足够了:因为在任何时间,它们不会超过100个job,而且这些job通常也不是同时调度的,job是个短命鬼(完成的非常快)。其它一些用户发现它们需要10、15、50甚至100个线程-因为它们有成千上万个trigger在不同的调度表中,这导致在同一时刻可能有平均10到100个job需要执行。找到scheduler线程池的合适大小依赖于你用scheduler干什么。因此没有真正的规则,除了尽量能保持线程池越小越好(考虑你的机器的资源),但是确保你有足够的线程触发你的Job。注意,如果trigger的触发时间到了,但是没有可用的线程,那么Quartz会阻塞(或暂停),直到有可用的线程出现,然后Job就会执行-比正常时间可能晚几毫秒。如果超过了scheduler配置的失败门限时间,这也可能导致线程失败。

ThreadPool接口定义在org.quartz.spi包下,你可以任何方式创建ThreadPool的实现。Quartz自带了一个简单的(但是已经满足了)线程池,名为org.quartz.simpl.SimpleThreadPool。这个线程池简单的维护一个固定大小的线程,不会增长,也不会减少。但是它相当稳定,测试的非常好,几乎所有用户都用这个线程池。

本教程的第9课讨论了JobStore和DataSource。值得注意的是,所有的 JobStore都实现了org.quartz.spi.JobStore接口,如果打包的JobStore不满足你的需要,你可以自己创建一个。

最后,你需要创建Scheduler实例。Scheduler自己需要起一个名字,需要告知它的RMI设置,持有JobStore和ThreadPool的引用。RMI设置包括Scheduler是否应该自己创建RMI服务器(让它自己变得对远端可用),使用的主机和端口等等。StdSchedulerFactory也可以产生Scheduler实例,这些实例实际上是远端进程创建的Scheduler代理(RMI stubs)。

StdSchedulerFactory

StdSchedulerFactory是org.quartz.SchedulerFactory接口的实现。它使用一组属性(java.util.Properties)来创建和实例化 Quartz Scheduler。这些属性通常是存储到文件,或者从文件加载,但是也可以由你的程序创建或者直接手动传递给这个工厂。简单的调用工厂的getScheduler()方法就会生成一个scheduler,初始化它(ThreadPool、JobStore和 DataSource),并返回一个应用给它的公共接口。

在Quartz发布包的doc/config目录下有一些示例配置(包括属性的描述)。你可以在Quartz文档的Reference章节下的Configuration手册中找到完整的文档。

DirectSchedulerFactory

DirectSchedulerFactory是另一个 SchedulerFactory实现。它对于那些希望以编程方式创建Scheduler的用户来说是很有用的。通常不鼓励使用它,原因如下:(1) 它需要用户完全理解它们在做什么;(2)它不允许声明式配置,话句话说,你必须硬编码所有的scheduler配置。

日志

Quartz使用SLF4J框架记录日志。为了调整日志设置(如输出的大小及位置s),你需要理解SLF4J框架,这已经超出了本文档的范围。

如果你想要捕获trigger触发和job执行的信息,你需要使用org.quartz.plugins.history.LoggingJobHistoryPluginorg.quartz.plugins.history.LoggingTriggerHistoryPlugin.

Quartz教程 第10课 配置、资源利用率和SchedulerFactory相关推荐

  1. M3DGIS三维数字沙盘电子沙盘地理信息系统开发教程第10课

    三维数字沙盘电子沙盘M3DGIS地理信息系统开发教程第10课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chinam ...

  2. Quartz.NET-课程10:配置,资源使用和SchedulerFactory

    Quartz以模块化方式构建,因此为了让它运行,需要将多个组件"拼凑"在一起.幸运的是,有一些帮助者可以做到这一点. 在Quartz开始工作之前需要配置的主要组件是: 线程池 作业 ...

  3. Alex 的 Hadoop 菜鸟教程: 第10课 Hive 安装和使用教程

    原帖地址: http://blog.csdn.net/nsrainbow/article/details/41748863 最新课程请关注原作者博客 声明 本文基于Centos 6.x + CDH 5 ...

  4. 最新Smarty基础商品教程 Smarty入门教程 Smarty框架教程 共10课

    Smarty为PHP MVC必不可少的,在Mvc中担任View视图的角色,学习了Smarty 在学习Thinkphp就简单很多了! -------------课程目录------------- 1-回 ...

  5. Quartz2.2.x官方文档2.2.X—第三章 10.配置,资源使用和SchedulerFactory

    Quartz 教程 Table of Contents | ‹ Lesson 9 | Lesson 11 › Lesson 10: 配置, 资源使用和SchedulerFactory Quartz架构 ...

  6. (翻译)Quartz官方教程——第十课:配置,资源使用和SchedulerFactory

    2019独角兽企业重金招聘Python工程师标准>>> Quartz的架构是模块化的,因此为了让它运行几个组件需要"拼凑"在一起.幸运的是,有一些类可以帮助你做到 ...

  7. Quartz配置资源介绍

    1.配置.资源SchedulerFactory Quartz以模块方式架构,因此要使它运行.几个组件必须要很好的咬合在一起.[现在已经有了一些现成的助手可以完成这些工作] 所有scheduler实例是 ...

  8. 第10课 Altium Designer20(AD20)+VESC6.4实战教程:绘制原理图7(北冥有鱼)

    第10课 Altium Designer20(AD20)+VESC6.4实战教程:绘制原理图7(北冥有鱼)

  9. 转载:mysql 5.7.10 安装配置方法图文教程——来自脚本之家网,作者是汤高

    mysql 5.7.10 安装配置方法图文教程 作者:汤高 字体:[增加 减小] 类型:转载 时间:2016-06-22 我要评论 这篇文章主要为大家分享了mysql 5.7.10 安装配置方法图文教 ...

最新文章

  1. 如何提升网站在搜索引擎中的排名?
  2. 二十九、电子商务服务推荐项目基本描述
  3. 华为免费虚拟服务器,免费试用虚拟服务器
  4. 决策树学习笔记整理【转】
  5. asp.net gridview 无法更新数据
  6. Kite Compositor for Mac基本工具的使用教程
  7. 零拷贝的基本原理及使用Java通过零拷贝实现数据传输
  8. python中out函数_cython函数输出与python函数outpu略有不同
  9. setsockopt中参数之SO_REUSEADDR的意义
  10. 桌面魔术可以用透明桌子揭密
  11. 100套计算机毕设源码+论文 免费分享 【2020最新版】
  12. opencv双目测距
  13. linux嵌入式做智能家居,嵌入式系统在智能家居中的应用
  14. 第四章网页文字编排设计
  15. SSL协议与Nginx安装SSL模块和ssl证书
  16. python 多线程爬虫下载中图分类号
  17. 在Mac上使用中国银行和工商银行网银
  18. java分词器加词库_Elasticsearch配置IK分词器的远程词库
  19. xxx was compiled with optimization - stepping may behave oddly; variables may not be available.
  20. mac 修改 DNS

热门文章

  1. 对于js面向对象的理解
  2. Android MPAndroidChart PieChart
  3. 软件工程——个人总结
  4. el-dialog避坑
  5. 最新改良版彩虹代刷知识付费模板系统
  6. mysql 日志配置
  7. 离散数学-谓词逻辑与前束范式
  8. 关于如何通过kali linux 攻击以及破解WPA/WPA2无线加密
  9. 成佩涛——成功做好软件项目的20个要点
  10. 在ubuntu下使用有道词典