Quartz

Quartz 的架构是模块化的,要让它运行起来需要几个模块的相互协作。所幸,一些现有的模块可以完成这些工作。   

    在 Quartz 中的主要组件包括: 

  • ThreadPool
  • JobStore
  • DataSources(如果需要)
  • Scheduler 本身

ThreadPool 提供了一组线程,Quartz 使用这些线程来执行任务。在线程池中的线程越多,那么可同时运行的任务就越多。然而,太多的线程会使系统的系能下降。一些 Quartz 用户发现 5 个左右的线程数刚好——因为他们在任何时间同时执行的任务数都不会超过 100 个,这些任务通常都不需要同时执行,并且任务都可以很快执行完毕。另外一些用户可能需要 10、15、50 或者甚至是 100 个线程——因为他们可能有几万个 trigger 和大量的调度器,并且平均下来每个时间点同时执行的任务数都有 10 到 100 个。找到适合你的线程数完全取决于你的需要。这里没有强制性的规则,只需要注意让线程数尽可能的小(为了节省系统资源),并且确保你的任务能够在要求的时间点执行。注意,如果 trigger 到时间触发任务,但是却没有足够的线程,Quartz 将会阻塞(暂停)直到线程可用,然后执行任务——这可能会让任务延迟执行几毫秒。但是如果一直等到调度器配置的“misfire threshold”时间都还没有可用线程,那么将会导致错过触发。

ThreadPool 接口定义在 org.quartz.spi 包中,你可以使用任何方式来实现这个接口。.Quartz 也有自己的一个简单实现,名为 org.quartz.simpl.SimpleThreadPool。这个简单的 ThreadPool 实现可维护一个固定数量的线程池——不能增加,也不能减少线程,但它非常强壮并且易于测试——几乎每个使用 Quartz 的用户都在使用这个线程池。

所有的 JobStore 都实现了 quartz.spi.JobStore 接口——如果所有的 JobStore 都不能满足你的需求,那么你也可以自己实现 JobStore。

最后,你需要创建 Scheduler 实例。Scheduler 自身需要设置一个名字,RMI 设置和 JobStore 和 ThreadPool 的实例。RMI 设置包括哪个 Scheduler 需要被创建作为 RMI 服务器对象(让它可以远程连接),使用哪个主机名和端口号等待。StdSchedulerFactory 也可以通过远程代理生成 Scheduler 实例。

StdSchedulerFactory

StdSchedulerFactory 是 org.quartz.SchedulerFactory 接口的一个实现。它使用了一组属性(java.util.Properties)来创建和初始化 Quartz Scheduler。这些属性通常都保存在属性文件中,但是也可以通过编码的方式直接通过 factory 来进行设置。简单地调用 getScheduler() 方法将会生成 Scheduler 并完成初始化工作,最后返回通用接口。

在 Quartz 发布包的 “docs/config” 目录下包含了一些简单配置。

DirectSchedulerFactory

DirectSchedulerFactory 是另一个 SchedulerFactory 实现。当需要对 Scheduler 进行更多编码控制的时候,可以使用这个类。使用它往往会觉得很困难,主要是因为 1)它需要用户对自己的行为非常了解;2)它不运行声明式配置,换句话说,所有的一切都需要通过编码来进行设置。

日志

Quartz 日志系统使用 SLF4J 框架。如果要了解更多的日志设置(例如日志输出的数量,日志输出的位置等等),那么需要去了解 SLF4J 框架。

如果你需要捕获 Trigger 触发和 Job 执行的更多额外信息。你可能会对 org.quartz.plugins.history.LoggingJobHistoryPlugin和org.quartz.plugins.history.LoggingTriggerHistoryPlugin 感兴趣。

 

最后欢迎大家访问我的个人网站: 1024s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值