Quartz Scheduler 开源框架 学习记录

Posted cjn123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz Scheduler 开源框架 学习记录相关的知识,希望对你有一定的参考价值。

 1.简介
 2.优点
 3.核心元素介绍
 4.线程视图
 5.数据存储
  1. 简介

Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。该项目于 2009 年被 Terracotta 收购,目前是 Terracotta 旗下的一个项目。 http://www.quartz-scheduler.org/ 这里可以下载 Quartz 的发布版本及其源代码。

  1. 优点
  • 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求;
  • 灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式;
  • 分布式和集群能力,Terracotta 收购后在原来功能基础上作了进一步提升。本文暂不讨论该部分内容
  • 作为 Spring 默认的调度框架,Quartz 很容易与 Spring 集成实现灵活可配置的调度功能。
  1. 核心元素介绍
  • scheduler 任务调度器:可以理解为实际执行调度的控制器。
    在 Quartz 中, scheduler 由 scheduler 工厂创建:
    (1)DirectSchedulerFactory 
    (2)StdSchedulerFactory。 
    Scheduler 主要有三种: 
    (1)RemoteMBeanScheduler 
    (2)RemoteScheduler 
    (3)StdScheduler。最常用! 

  • trigger 触发器:用于定义任务调度时间规则。
    Quartz 中主要提供了四种类型的 trigger:
    (1)SimpleTrigger;
    (2)CronTirgger;
    (3)DateIntervalTrigger;
    (4)NthIncludedDayTrigger;

  • job 任务。
    主要有两种类型的 job:
    (1)无状态的(stateless)
    (2)有状态的(stateful)

对于同一个 trigger 来说,有状态的 job 不能被并行执行,只有上一次触发的任务被执行完之后,才能触发下一次执行。

技术图片

  1. 线程视图 

技术图片

 

 

    1. 数据存储 
      qrtz_blob_triggers : 以Blob 类型存储的触发器。
      qrtz_calendars:存放日历信息,quartz可配置一个日历来指定一个时间范围。
      qrtz_cron_triggers:存放cron类型的触发器。
      qrtz_fired_triggers:存放已触发的触发器。
      qrtz_job_details:存放一个jobDetail信息。
      qrtz_job_listeners:job监听器。
      qrtz_locks: 存储程序的悲观锁的信息(假如使用了悲观锁)。
      qrtz_paused_trigger_graps:存放暂停掉的触发器。
      qrtz_scheduler_state:调度器状态。
      qrtz_simple_triggers:简单触发器的信息。
      qrtz_trigger_listeners:触发器监听器。
      qrtz_triggers:触发器的基本信息。

ps: https://github.com/AnnCoding/quartzDemo 持续更新......

以上是关于Quartz Scheduler 开源框架 学习记录的主要内容,如果未能解决你的问题,请参考以下文章

Quartz.net开源作业调度框架使用详解

Quartz.Net学习笔记-简介

开源作业调度框架 - Quartz.NET - 实战使用2

quartz学习

Quartz学习总结

Quartz任务调度框架使用