Quartz 教程


Table of Contents | ‹ Lesson 9 | Lesson 11 ›

Lesson 10: 配置, 资源使用和SchedulerFactory

Quartz架构是模块化的,因此要运行需要几个组件组合起来。幸运的是,有一些帮手存在。

在Quartz能够工作之前有些重要的组件需要配置:

  • ThreadPool
  • JobStore
  • DataSources (如果必要的话)
  • The Scheduler itself

ThreadPool 提供一组当执行任务时Quartz使用的线程。池中线程越多,就能够同时执行越多的任务。然后,太多的线程会导致你的系统崩溃。大多数Quartz用户发现5个左右线程是足够的 -因为他们在任何时候都会有小于100任务,这些任务通常不会同时运行,而且这些任务通常是短暂的(完成快速的). 有些用户发现他们需要10,15,50,设置100个线程 - 因为他们有成千上万的各种各样的触发器 - 在任何时间都有平均10-100个任务要执行。你的调度程序池使用正确的数量完全取决于你的调度任务是怎么样。没有真正的规则, 除了保持线程数尽可能小之外(为了你机器资源考虑) - 但是确保你有足够的时间让你的任务触发。主要如果一个触发器的触发时间到了,但是没有一个可获得的线程,Quartz将会阻塞(暂停)知道线程可获取,接着任务将会执行 -比它应有段时间后几毫秒。这可能导致线程错误 - 如果在调度程序配置的"错误阀值"时间内没有可用线程。

线程池接在org.quartz.spi包内定义,你可以以任何你喜欢的方式是实现线程池。Quartz附带一个简单(但是非常有用)线程池名为org.quartz.simpl.SimpleThreadPool. 这个线程池只是会维护一组固定的线程池 - 永远不会减少,永远不会增加。但是它非常强东并且经受的主考验 - 几乎每个使用Quartz的人都使用这个池。

JobStoresDataSources 在教程课程9进行了讨论。这是值得注意,所有JobStores都需要是实现 org.quartz.spi.JobStore 接口 - and 如果一个捆绑的JobStores不是你需要的, 然后你可以自己做。

最后, 你需要创建一个 Scheduler 实例. 调度程序本身需要一个名字, 告诉它RMI设置,并且提供一个JobStore和ThreadPol。RMI设置包括是否应该将调度程序创建自身为RMI服务对象 (使其可用于获取远程连接),  要使用的host和端口, 例如.. StdSchedulerFactory (在下面讨论) 也可以创产生调度程序实例的实际代理通过远程去创建调度程序。

StdSchedulerFactory

StdSchedulerFactory是一个org.quartz.SchedulerFactory接口的是吸纳。它使用一系列属性 (java.util.Properties)去创建和初始化一个Quartz调度程序。这些属性通常存储在文件中并从文件中加载,但是也可以由你的应用直接创建。简单的在工厂调用getScheduler()方法生成调度程序,并初始化(包括它的线程池,JobStore和数据库资源), 返回一个公共接口的引用。

在Qaurtz发行版目录"docs/config"中有一些样例配置(包含对属性的描述)。你可以在Quartz文档的参考部分找到完整文档。

DirectSchedulerFactory

DirectSchedulerFactory是另一个SchedulerFactory的实现。对于希望以更程序化的方式创建调度程序的实例的这很有帮助。由于以下原因通常不要使用它:(1) 它要求用户对它所做的事情有深入的了解 (2) 它不允许声明式配置 - 或者换句话说, 你最终会硬编码所有调度程序设置。

Logging

Quartz使用SLF4J框架满足它的日志需要。为了调整日志设置 (比如产出数量, 输出的位置), 你不需要理解 SLF4J 框架, 这超出了本文的范畴。

如果你想要获得关于触发器和任务执行的额外信息,你可以启用org.quartz.plugins.history.LoggingJobHistoryPluginorg.quartz.plugins.history.LoggingTriggerHistoryPlugin.

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

  1. Android HIDL 官方文档(七,END)—— 网络堆栈配置工具(Network Stack Configuration Tools)

    网络工具封装 网络工具封装过滤器 1 供应商接口与链 2 允许使用的命令 21 ip 22 iptables ip6tables 23 ndc 24 tc 对应的官方文档地址:HIDL(General ...

  2. oracle goldengate实战指南,Oracle GoldenGate 11g官方文档Administrator’s Guide续三

    CHAPTER 3 第三章 Configuring Manager and Network Communications 配置manager和网络通信 本章包含以下说明: ●配置manager进程 ● ...

  3. Python官方文档学习心得(第三篇)

    1.定义方法 关键字 def 是方法定义的标志.接下来紧跟方法名和被圆括号所包围的参数列表.方法的主 体语句将在下一行开始并且必须缩进. 方法主体的首句可选择性地是一句字符,用来说明方法的主要功能 例 ...

  4. Odoo15官方文档 开发 核心教程 第4章:模型和基本字段

    文章目录 对象关系映射(ORM) 模型字段 类型 常见属性 自动字段 在上一章的末尾,我们创建了一个Odoo模块.然而,在这一点上,它仍然是一个空壳,不允许我们存储任何数据.在我们的房地产模块中,我们 ...

  5. 2DToolkit官方文档中文版打地鼠教程(一):初始设置

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  6. OpenCV-Python官方文档学习笔记(上)

    整理自OpenCV-Python官方文档 一. OpenCV-Python Tutorials 1 安装及验证 2 图片读写,展示 3 视频读写,展示 4 绘图功能(绘制几何形状:线.圆.椭圆.矩形. ...

  7. Ant Design 入门-参照官方文档使用组件

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 先来一个按钮组件使用的对比,官方文档的(不能直接用)和实际能用的. 官网demo: import { Tabl ...

  8. 坑爹的微软官方文档:SQL无人值守安装

    我在部署项目的时候,需要用批处理无人值守安装SQLserver,.Net等组件. 于是查了微软官方文档,其中一项内容如下: http://msdn.microsoft.com/zh-cn/librar ...

  9. Tomcat官方文档关于数据源配置的内容

    虽然有网上有网友自己总结的文章,但说明得总是不够清晰,还是参考官方文档理解得比较透彻: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html h ...

最新文章

  1. linux下载哪个python版本-修改linux下python的默认版本
  2. C#[抽象类,接口]
  3. 【Tools】Linux下C和C++程序中内存泄露检测
  4. Windows7优化开机、关机速度的方法
  5. python类的成员函数_Python为类对象动态添加成员函数
  6. labview周立功can通讯程序.rar_使用Labview进行CAN 通讯之dbc解析
  7. html元素两种分类。替换元素和不可替换元素;块级元素和行内元素
  8. springcloud基于ribbon的canary路由方案 1
  9. Java 技术是什么?
  10. The “QtRunWork“ task returned false but did not log an error
  11. 万能五笔输入法弹窗_万能五笔输入法
  12. sql注入工具的使用
  13. 破网与立网,数字螺旋下的适者生存
  14. 谐波叠加法matlab,谐波叠加法 可运行程序,分享不谢
  15. Docker基本命令
  16. 【web安全】——文件包含漏洞
  17. 页面置换算法(FIFO、第二次机会、LRU)
  18. 华为设备DNS配置命令
  19. 北欧计算机专业出国,留学北欧,哪个国家计算机专业比较好?
  20. amazon mechanical turk介绍

热门文章

  1. 《青年文摘》经典语句摘录
  2. MariaDB商标和版权
  3. Winform实时显示图像桌面程序
  4. CSDN博客怎么修改皮肤背景
  5. python游戏练习侧面射击没有出现飞船和子弹
  6. Fortran 语言数组下标默认从1开始,C/C++/Java等其他语言默认从0开始
  7. 爬取新浪微博用户的个人信息和微博内容
  8. Ecava Sdn Bhd IntegraXor产品项目信息泄露漏洞
  9. 51单片机(STC89C52RC) lcd1602 4线接法+经典IO扩展综合实验
  10. 裸辞是一种什么体验?