php quartz,QUARTZ系列之一-基础概念(Scheduler/Job/JobDetail/Trigger)

摘抄自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 withIdentity(..) a job name will be generatedfor 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()

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

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

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

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

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

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

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

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

zabbix学习系列之基础概念

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

Quartz Job scheduling 基础实现代码

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

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

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

Quartz系列(一):基础介绍

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

理解 angular2 基础概念和结构 ----angular2系列(二)

前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

随机推荐

自定义 URL Scheme 完全指南(转载)

iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用. 注册自定义 URL Scheme ...

sql server 排名函数:DENSE_RANK

一.需求 之前sql server 的排名函数用得最多的应该是RoW_NUMBER()了,我通常用ROW_NUMBER() + CTE 来实现分页:今天逛园,看到另一个内置排名函数还不错,自己顺便想了 ...

重写navigationController的push方法后,出现卡顿现象

在使用navigation的pushViewController进行push的时候,两个页面间的动画会出现卡顿一下再推出的效果,是因为iOS7 viewController背景颜色的问题,看到大神的博 ...

MVC+AjaxFileUpload文件上传

来源:微信公众号CodeL 本次给大家分享的是ajaxfileupload文件上传插件,百度一大堆功能超炫的文件上传插件,为什么我们会选择这个插件呢? 原因是在此之前,我们尝试使用过很多基于flash ...

poj 1007 DNA Sorting 解题报告

题目链接:http://poj.org/problem?id=1007 本题属于字符串排序问题.思路很简单,把每行的字符串和该行字符串统计出的字母逆序的总和看成一个结构体.最后把全部行按照这个总和从小 ...

在多线程中进行UI操作

那么在子线程中的UI操作如何处理呢?有两种方法: 一:在子线程,你需要进行的UI操作前添加dispatch_async函数,即可将代码块中的工作转回到主线程 dispatch_async(dispat ...

初识DirectX和COM

一.COM 1.什么是COM对象 一个COM对象事实上是一个或一套实现了大量接口的C++类 2.COM的优点 不用重新编译你的程序就能升级COM模块 3.COM概貌 4.COM对象的接口 QueryI ...

nginx : server_name localhost 和 chrome : Provisional headers are shown

问题相关问题现象:解决思路解决方案总结 问题相关 nginx : server_name localhost chrome : Provisional headers are shown 问题现象: ...

笔记,spring4+ehcache2配置文件

最近工作中遇到个功能需要整合ehcache,由于spring版本用的是最新的4.2.4,而在ehcache官网找到的集成配置文档是spring3.1的,因此配了几次都不成功,在历经一番波折后终于成功集 ...

vue 兼容360及safari的方法

1. npm install --save-dev babel-polyfill 2.  main.js 中 import "babel-polyfill";        或者: ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值