Quartz教程 第10课 配置、资源利用率和SchedulerFactory
第10课 配置、资源利用率和SchedulerFactory
Quartz的架构是模块化的,因此要让它运行起来,需要将多个组件整合到一起。幸运地是,已经有一些工具帮助我们实现这个。
在Quartz可以工作之前,需要配置的主要组件有:
- ThreadPool
- JobStore
- DataSource(如果需要的话)
- 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.LoggingJobHistoryPlugin和org.quartz.plugins.history.LoggingTriggerHistoryPlugin.
Quartz教程 第10课 配置、资源利用率和SchedulerFactory相关推荐
- M3DGIS三维数字沙盘电子沙盘地理信息系统开发教程第10课
三维数字沙盘电子沙盘M3DGIS地理信息系统开发教程第10课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chinam ...
- Quartz.NET-课程10:配置,资源使用和SchedulerFactory
Quartz以模块化方式构建,因此为了让它运行,需要将多个组件"拼凑"在一起.幸运的是,有一些帮助者可以做到这一点. 在Quartz开始工作之前需要配置的主要组件是: 线程池 作业 ...
- Alex 的 Hadoop 菜鸟教程: 第10课 Hive 安装和使用教程
原帖地址: http://blog.csdn.net/nsrainbow/article/details/41748863 最新课程请关注原作者博客 声明 本文基于Centos 6.x + CDH 5 ...
- 最新Smarty基础商品教程 Smarty入门教程 Smarty框架教程 共10课
Smarty为PHP MVC必不可少的,在Mvc中担任View视图的角色,学习了Smarty 在学习Thinkphp就简单很多了! -------------课程目录------------- 1-回 ...
- Quartz2.2.x官方文档2.2.X—第三章 10.配置,资源使用和SchedulerFactory
Quartz 教程 Table of Contents | ‹ Lesson 9 | Lesson 11 › Lesson 10: 配置, 资源使用和SchedulerFactory Quartz架构 ...
- (翻译)Quartz官方教程——第十课:配置,资源使用和SchedulerFactory
2019独角兽企业重金招聘Python工程师标准>>> Quartz的架构是模块化的,因此为了让它运行几个组件需要"拼凑"在一起.幸运的是,有一些类可以帮助你做到 ...
- Quartz配置资源介绍
1.配置.资源SchedulerFactory Quartz以模块方式架构,因此要使它运行.几个组件必须要很好的咬合在一起.[现在已经有了一些现成的助手可以完成这些工作] 所有scheduler实例是 ...
- 第10课 Altium Designer20(AD20)+VESC6.4实战教程:绘制原理图7(北冥有鱼)
第10课 Altium Designer20(AD20)+VESC6.4实战教程:绘制原理图7(北冥有鱼)
- 转载:mysql 5.7.10 安装配置方法图文教程——来自脚本之家网,作者是汤高
mysql 5.7.10 安装配置方法图文教程 作者:汤高 字体:[增加 减小] 类型:转载 时间:2016-06-22 我要评论 这篇文章主要为大家分享了mysql 5.7.10 安装配置方法图文教 ...
最新文章
- 如何提升网站在搜索引擎中的排名?
- 二十九、电子商务服务推荐项目基本描述
- 华为免费虚拟服务器,免费试用虚拟服务器
- 决策树学习笔记整理【转】
- asp.net gridview 无法更新数据
- Kite Compositor for Mac基本工具的使用教程
- 零拷贝的基本原理及使用Java通过零拷贝实现数据传输
- python中out函数_cython函数输出与python函数outpu略有不同
- setsockopt中参数之SO_REUSEADDR的意义
- 桌面魔术可以用透明桌子揭密
- 100套计算机毕设源码+论文 免费分享 【2020最新版】
- opencv双目测距
- linux嵌入式做智能家居,嵌入式系统在智能家居中的应用
- 第四章网页文字编排设计
- SSL协议与Nginx安装SSL模块和ssl证书
- python 多线程爬虫下载中图分类号
- 在Mac上使用中国银行和工商银行网银
- java分词器加词库_Elasticsearch配置IK分词器的远程词库
- xxx was compiled with optimization - stepping may behave oddly; variables may not be available.
- mac 修改 DNS