zoukankan      html  css  js  c++  java
  • 01_Quartz基础结构

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

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

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

      每隔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。组名和名称组成了对象的全名,统一类型对象的全名不能相同。

  • 相关阅读:
    伪类和伪元素的区别
    inline-block 空隙
    递归模版,绑定树
    lessJs
    怎样开发单页面app
    控件的开发接口的设计原理
    加载器中的预编
    linux加固脚本
    ogg同步服务配置复制和同步进程的开始文件及RBA
    tidb4.0修改参数全过程
  • 原文地址:https://www.cnblogs.com/HigginCui/p/6612175.html
Copyright © 2011-2022 走看看