【各种任务调度的使用场景】

  论坛每天凌晨统计论坛用户的积分排名。

  论坛每半个小时生成精华文章。

  每隔30分钟对锁定过期的用户解锁。

  每月1号统计上个月各部门的业务数据。

【Quartz 简介】

  Quartz提供了强大的任务调度机制,Quartz允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。

  Quartz还提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。

  Quartz还提供了组件式的侦听器、各种插件、线程池等功能。

【Quartz 基础结构】

[ Job ]

  Job是一个接口,只有一个方法 void execute( JobExecutionContext context ),开发者实现该接口并在方法里定义需要执行的任务。

  JobExecutionContext 类提供了调度上下文的各种信息。

  Job运行时的信息保存在JobDataMap中。

[ JobDetail ]

  Quartz在每次执行Job时,都重新创建一个Job实例。

  JobDetail描述了Job的实现类以及其他相关的静态信息,如Job名称、描述、关联监听器等信息。

  构造方法:JobDetial(String name,String group, Class jobClass)。jobClass就是对应的Job的实现类。

[ Trigger ]

  是一个类,描述触发Job执行的时间触发规则。

  主要有SimpleTrigger 和 cronTrigger这两个子类。

  SimpleTrigger:适合 当仅需要一次或者以固定时间间隔周期执行的任务。

  CronTrigger:使用Cron表达式定义出各种复杂的调度方案,如每天早上8点、每周一下午5点。

[ Calendar ]

  是org.quartz.Calendar。

  它是一些日历特定时间点的集合。

  一个Trigger可以和多个Calendar关联,以便排除或者包含某些时间点。

[ Schedular ]

  代表一个Quartz的独立运行的容器。

  Trigger和JobDetail可以注册到Scheduler中,两者在Scheduler中拥有自己组合名称。

  组以及名称是Scheduler查找某一对象的依据,Trigger、JobDetail的组名、名称必须唯一。

  Scheduler可以将Trigger绑定到某一个JobDetail中,这样当Trigger被触发时,对应的Job就被执行。

  一个Job可以对应多个Trigger,一个Trigger只能对应一个Job。

  Scheduler实例可以由SchedulerFactory工厂创建。

  Scheduler中拥有一个SchedulerContext,保存着Scheduler的上下文信息,Job和Trigger都可以访问SchedulerContext中的信息。SchedulerContext内部通过一个Map维护这些上下文数据。

[ ThreadPool ]

  Scheduler使用一个线程池作为任务运行的基础设施。任务通过共享线程池中的线程提高运行效率。

【Quzrtz内部组件结构图】

一个Scheduler可以拥有多个Trigger和JobDetail,他们可以分到不同的组中。

Scheduler注册Trigger和JobDetail时,如果不显式指定所属的组,Scheduler将会将其放入默认组中,默认组的组名为Scheduler.DEFAULT_GROUP。组名和名称组成了对象的全名,统一类型对象的全名不能相同。

01_Quartz基础结构的更多相关文章

  1. Apworks框架实战(六):使用基于Entity Framework的仓储基础结构

    在前面的章节中,我们已经设计了一个简单的领域模型,接下来我们希望能够实现领域模型的持久化及查询.在Apworks中,实现了面向Entity Framework.NHibernate以及MongoDB的 ...

  2. 开放式管理基础结构 OMI

    Windows 长久以来在 CIM 实施领域一直傲立桥头,而这一切都是从 WMI(Windows 管理基础结构)开始的.分布式管理任务组 (DMTF) 通用信息模型 (CIM) 是一种开放式标准,用于 ...

  3. 设置将 Microsoft Azure 的网络基础结构以支持设置为灾难恢复站点

    Prateek Sharma 云 + Enterprise 高级项目经理 Azure SiteRecovery (ASR)可以将Microsoft Azure用作您的虚拟机的灾难恢复站点. 当管理 ...

  4. 转载文章:Windows Azure 基础结构服务上的 Microsoft Dynamics NAV 和 Microsoft Dynamics GP!

    Windows Azure 基础结构服务(虚拟机和虚拟网络)可提供按需基础结构,该基础结构可进行伸缩以适应不断变化的业务需求.无论您是在虚拟机中创建新应用程序,还是运行现有应用程序,我们都将按分钟收费 ...

  5. Gartner 认定 Microsoft 为具有远见卓识的云基础结构即服务提供商

    四个月前, Windows Azure 基础结构服务结束了预览版阶段,正式发布了,它具有业内领先的 SLA.随后, 凭借愿景的完整性和执行力,Gartner 很快认可了 Microsoft 在市场中的 ...

  6. 1详细解析HTML基础结构

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 详细解析HTML基础结构

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 适用于 Windows VM 的 Azure 示例基础结构演练

    本文是更广泛系列的一部分,当你在 Azure 中构建应用程序基础结构时,这些系列向你提供设计注意事项和准则. 用户可以查看系列中的其他主题. 尽管用户可以在 Azure 中快速地构建出开发/测试环境, ...

  9. 在 Azure 中将基础结构自动化工具与虚拟机配合使用

    若要以一致的方式大规模创建和管理 Azure 虚拟机 (VM),通常需要某种形式的自动化. 可以通过许多工具和解决方案来自动完成整个 Azure 基础结构部署和管理生命周期. 本文介绍了一些可以在 A ...

随机推荐

  1. bootsafe64 ev.sys

    Win10 安装了驱动精灵之后,直接蓝屏,再次重启,出现: 采用PE启动盘进入系统,之后将C:\WINDOWS\system32\drivers下kavbootc.sys文件删除了,重启之后就可以进入 ...

  2. 洛谷 P1546 最短网络 Agri-Net(最小生成树)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P1546 首先不难看出这道题的思想是用了最小生成树,但是这道题有难点: 1.读题读不明白 2.不会读入 ...

  3. phpstorm利用database连接mysql数据库

    首先声明一点,database只能连接一个已存在的数据库,不能创建数据库 连接一个已存在的数据库步骤: 1,找到database:连续点击俩次shift,输入database就能找到了 2,点击绿色的 ...

  4. mysql5.6 的st_distance 实现按照距离远近排序。

    当前所处在的位置(113.858202 , 22.583819 ),需要查询我附近1000米内的小区,并安装由近到远的顺序排列  SELECT s.id,s.name,s.lng,s.lat, rou ...

  5. HDU6395(分段+矩阵快速幂)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6395 给你一个式子,给出你A,B,C,D,P,n,让你求出第n项的式子Fn.(其中ABCDPn均在1e9的 ...

  6. 比较两种数组随机排序方法的效率 JavaScript版

    //比较2中数组随机排序方法的效率 JavaScript版 //randon1思路 //当len=5时候,从0-5中随机3一个放入i=0, // 从0-3随机一个2放入i=2 // 从0-2随机一个1 ...

  7. yum lnmp全家桶

    ######################################################### #by:kingle # #use: lnmp # #version:1.0 # # ...

  8. 工作采坑札记:4. Hadoop获取InputSplit文件信息

    1. 场景 基于客户的数据处理需求,客户分发诸多小数据文件,文件每行代表一条记录信息,且每个文件以"类型_yyyyMMdd_批次号"命名.由于同一条记录可能存在于多个文件中,且处于 ...

  9. document.write与document.getElementById.innterHTML的区别

    <html> <head> <meta charset="utf-8"> <script> var tmp = "< ...

  10. HTML <frameset>不同frame之间传值

    布局 左右30%--70%,点击左边的复选框,右边显示相应的反应. 代码 main2.html <html> <frameset cols="30%, 70%"& ...