摘抄自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. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  2. Elasticsearch5.5.1学习笔记

    在linux下增加ik分词 一.下载分词器安装包 wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v ...

  3. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

  4. c# automapper 使用(一)

    一.最简单的用法 有两个类User和UserDto public class User { public int Id { get; set; } public string Name { get; ...

  5. Python小练习(二)

    按照下面的要求实现对列表的操作:       1)产生一个列表,其中有40个元素,每个元素是0到100的一个随机整数       2)如果这个列表中的数据代表着某个班级40人的分数,请计算成绩低于平均 ...

  6. 1.1.17 Word在表格中插入竖排文字,显示一半

    隐藏效果如下所示: 这是因为文字的[段落行距]设置为[固定值],将文字选中,设置为[单倍行距]即可.

  7. mysql 远程备份

    #远程备份./innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user xxx --host 192.168.1.123 \--pa ...

  8. Bootstrap 插件收集

    Bootstrap-Mutilselect  将下拉选项扩展支持多选以及多种选择方式 http://davidstutz.de/bootstrap-multiselect/ Bootstrap Sel ...

  9. 涂抹mysql笔记-数据库中的权限体系

    涂抹mysql笔记-数据库中的权限体系<>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确.mysql验证用户需要检查3项值:用户名.密码和主机来源(user.password. ...

  10. redis集群相关

    1.主从数据库配置 为master数据库添加slave数据库只需要在从数据库的配置中添加配置: slaveof 主数据库地址 主数据库端口 当然,也可以通过命令: redis-server --por ...