摘抄自quartz官方文档:

The key interfaces of the Quartz API are:

  • Scheduler - the main API for interacting with the scheduler.  (quartz提供的用来和调度器交互的API)
  • Job - an interface to be implemented by components that you wish to have executed by the scheduler.(你希望被调度的任务体)
  • JobDetail - used to define instances of Jobs.  (用来定义任务实例)
  • Trigger - a component that defines the schedule upon which a given Job will be executed. (定义了Job运行的调度时间表(即schedule,注意与scheduler的区别))
  • JobBuilder - used to define/build JobDetail instances, which define instances of Jobs.(job构建器,quartz特有的DSL)
  • TriggerBuilder - used to define/build Trigger instances.(trigger构建器,quartz特有的DSL)

Quartz provides “builder” classes that define a Domain Specific Language (or DSL, also sometimes referred to as a “fluent interface”).

quartz定义了一套DSL,其实也就是一套bulider模式。值得注意的是,JobBuilder的doc中有这样一句:

The builder will always try to keep itself in a valid state, with reasonable defaults set for calling build() at any point. 

For instance if you do not invoke <i>withIdentity(..)</i> a job name will be generated for you.

builder会努力使自己处于有效的状态。

Scheduler:

scheduler:调度器,没啥好讲的。various “ScheduleBuilder” classes build出各种不同的scheduler。

Trigger:

1.1 SimpleTrigger:

1.2 CronTrigger:

1.2.1.特点:recurs based on calendar-like notions,such as "every Friday at noon","every weekday and 9:30 am",even "every 5 minutes between 9:00 am and 10:00 am on every Monday, Wednesday and Friday during January".

1.2.2 CRON表达式:自己百度

1.2.3 使用:

using TriggerBuilder (for the trigger’s main properties) and CronScheduleBuilder (for the CronTrigger-specific properties).

To use these builders in a DSL-style, use static imports:

import static org.quartz.TriggerBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import static org.quartz.DateBuilder.*:

Build a trigger that will fire every other minute, between 8am and 5pm, every day:

  trigger = newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(cronSchedule("0 0/2 8-17 * * ?"))
.forJob("myJob", "group1")
.build();

1.2.4 Misfire说明:

Misfire Instruction Constants of CronTrigger:

MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY                                   // java doc中未见此字段,但是官方文档有此字段
MISFIRE_INSTRUCTION_DO_NOTHING = 2 // 1. 更新next-fire-time;2.本次不执行
MISFIRE_INSTRUCTION_FIRE_NOW = 1 // to be fired now

Note:1.也有Trigger.MISFIRE_INSTRUCTION_SMART_POLICY字段,当作MISFIRE_INSTRUCITON_FIRE_NOW 处理。

2.行为的具体细节参考CronTrigger.updateAfterMisfire()方法

3.使用方式:放到schedule中定义即可:

cronSchedule("0 0/2 8-17 * * ?")
..withMisfireHandlingInstructionFireAndProceed()

QUARTZ系列之一-基础概念(Scheduler/Job/JobDetail/Trigger)的更多相关文章

  1. .NET技术面试题系列(1) 基础概念

    这是.NET技术面试题系列第一篇,今天主要分享基础概念. 1.简述 private. protected. public.internal 修饰符的访问权限 private : 私有成员, 在类的内部 ...

  2. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  3. 快速入门系列--TSQL-01基础概念

    作为一名程序员,对于SQL的使用算是基础中的基础,虽然也写了很多年的SQL,但常常还是记不清一些常见的命令,故而通过一篇博文巩固相关的记忆,并把T-SQL本身的一些新特性再进行一次学习. 首先回顾基础 ...

  4. angular 2+ 变化检测系列一(基础概念)

    什么是变化检测? 变化检测的基本功能就是获取应用程序的内部状态(state),并且是将这种状态对用户界面保持可见.状态可以是javascript中的任何的数据结构,比如对象,数组,(数字,布尔,字符串 ...

  5. zabbix学习系列之基础概念

    触发器 概念 "监控项"仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送警告信息,"触发器"正式英语为监控项所收集的数据 ...

  6. Quartz Job scheduling 基础实现代码

    Quartz 集成在 SpringBoot 中分为 config.task.utils.controller 和 MVC 的三层即 controller.service.dao 和 entity. c ...

  7. 【优化技术专题】「温故而知新」基于Quartz系列的任务调度框架的动态化任务实现分析

    不提XXLJOB或者其他的调度框架,就看我接触的第一个任务调度框架Quartz(温故而知新) Quartz的动态暂停 恢复 修改和删除任务 实现动态添加定时任务,先来看一下我们初步要实现的目标效果图, ...

  8. MongoDB入门系列(一):基础概念和安装

    概述 MongoDB是目前非常流行的一种非关系型数据库,作为入门系列的第一篇本篇文章主要介绍Mongdb的基础概念知识包括命名规则.数据类型.功能以及安装等. 环境: OS:Windows Versi ...

  9. Quartz系列(一):基础介绍

    新建一个.NET Core控制台项目,NuGet引用Quartz引用. class Program { static void Main(string[] args) { var task = Tas ...

随机推荐

  1. leetcode 846.Hand of Straights

    对于一个数组中的数分为W组且在每一组内的数是连续存在的. 考虑使用map映射来记录每个数的个数的,并且对于数组中的数进行从小到大的排列的.同时每次需要更新最开始的那个起始数的,可能是以及出现的也可能是 ...

  2. SELinux初探

  3. day42-43 绝对定位 相对定位

    一.超链接导航栏案例 html结构 <div class="nav"> <ul> <li> <a href=""> ...

  4. 光速搭lvs + keepalived + nginx

    环境:   VIP         192.168.2.224 LVS        192.168.2.217     centos7 nginx1    192.168.2.231     cen ...

  5. Redis和Memcache区别,优缺点对比

    1. Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等. 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供li ...

  6. jenkines的工作区目录位置查找

    先找到jenkines的主目录 系统-系统配置 然后工作区在主目录的workspace文件夹里面

  7. 关于CPU CACHE工作机制的学习

    转自:http://blog.csdn.net/notbaron/article/details/48143409 1.  存储层次结构 由于两个不谋而合的因素如下: l  硬件:由于不同存储技术的访 ...

  8. ubuntu server cloud img username password

    新安装了OpenStack Queens发现无镜像,蹦蹦跳跳的下载了ubuntu的镜像 网址https://cloud-images.ubuntu.com/ 最好你自己找你想要的,vmdk.ova.i ...

  9. js开发相关

    获取url中的参数 (function ($) { $.getUrlParam = function (name) { var reg = new RegExp("(^|&)&quo ...

  10. 这可能是目前最新的 Vue 相关开源项目库汇总(转)

    访问地址:https://juejin.im/entry/58bf745fa22b9d0058895a58 原文链接:https://github.com/opendigg/awesome-githu ...