zoukankan      html  css  js  c++  java
  • 【Quartz】Quartz的数据库表

    select * from test.QRTZ_TRIGGERS 触发器表

    select * from QRTZ_PAUSED_TRIGGER_GRPS 暂停的分组任务表

    select * from QRTZ_LOCKS 锁表

    select * from QRTZ_JOB_DETAILS 任务表详情((调度名字和分组和job名字唯一决定一个job))

    select * from QRTZ_FIRED_TRIGGERS  任务执行详情

    [1]插入一个任务

    1、先从LOCKS中获取行级锁,锁标识(TRIGGER_ACCESS)

    2、查看是否存在JOB_DETAILS,不存在保存

    3、查看是否存在TRIGGERS

          ->判断当前分组是否暂停PAUSED_TRIGGER_GRPS,或所有分组是否暂停。如暂停,TRIGGERS为PAUSED

          ->如果当前定时任务,不允许执行,则去FIRED_TRIGGERS里查询其状态。其状态,为TRIGGERS的状态。(当前TRIGGERS状态不为WAITING和PAUSED,则返回当天状态,如果)

    4、保存TRIGGERS(保存的时候,其状态很重要,依赖PAUSED_TRIGGER_GRPS,FIRED_TRIGGERS里的数据)

    5、commit或roball

    [2]一次触发任务调度的计划

     1、先从LOCKS中获取行级锁,锁标识(TRIGGER_ACCESS)

     2、访问TRIGGERS,找出最近要执行的,且状态为WAITING的触发器列表。List(triggerName和triggerGroup),再遍历逐个访问TRIGGERS和JOB_DETAILS表

      ->修改TRIGGERS表记录的状态由WATING-ACQUIRED

          ->在FIRED_TRIGGERS表中插入新记录,状态为ACQUIRED

     3、如果出现异常,根据FIRED_TRIGGERS表中的instanceName查询出,所有的FIRED_TRIGGERS记录,验证刚才获取的TRIGGERS列表中是否包含相同instanceName

     4、释放行级锁,锁标识(TRIGGER_ACCESS)

     5、如果达到要执行任务的时间,在此获取TRIGGER_ACCESS

     6,根据要激活List<Triggers>,验证每一条TRIGGERS的状态是否为ACQUIRED(如果存在获取当前状态,如果不存在状态为:DELETED)

         ->如果是,则继续验证JOB_DETAILS

        ->如果不是,返回null

    7、验证job,是否存在

    8、修改FIRED_TRIGGERS的状态:ACQUIRED->EXECUTING

          --->如果修改验证过程中有异常,则将TRIGGERS的状态从ACQUIRED-->WATIING,并根据instanceName删除FIRED_TRIGGERS里的记录。

    9、将TRIGGERS表的状态:ACQUIRED->WATIING

    10、释放锁

    11、创建内存的JobRunShell,交给工作线程运行。



    //等待
    String STATE_WAITING = "WAITING";

    //获取
    String STATE_ACQUIRED = "ACQUIRED";

    //执行
    String STATE_EXECUTING = "EXECUTING";

    //完成
    String STATE_COMPLETE = "COMPLETE";

    //阻塞
    String STATE_BLOCKED = "BLOCKED";

    //错误
    String STATE_ERROR = "ERROR";

    //暂停
    String STATE_PAUSED = "PAUSED";

    //暂停阻塞
    String STATE_PAUSED_BLOCKED = "PAUSED_BLOCKED";

    //删除
    String STATE_DELETED = "DELETED";

    //错过
    String STATE_MISFIRED = "MISFIRED";
  • 相关阅读:
    第1次作业
    第0次作业
    总结报告
    第14、15周作业
    第七周作业
    第六周作业
    第四周作业
    第四次作业
    第三次作业
    2018第二次作业
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/9307236.html
Copyright © 2011-2022 走看看