文档章节

Quartz Trigger

这些年了1990
 这些年了1990
发布于 2016/10/07 19:23
字数 547
阅读 38
收藏 1

前面我们提到 Quartz 中四种类型的 Trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger, 和 NthIncludedDayTrigger。

SimpleTrigger 一般用于实现每隔一定时间执行任务,以及重复多少次,如每 2 小时执行一次,重复执行 5 次。SimpleTrigger 内部实现机制是通过计算间隔时间来计算下次的执行时间,这就导致其不适合调度定时的任务。例如我们想每天的 1:00AM 执行任务,如果使用 SimpleTrigger 的话间隔时间就是一天。注意这里就会有一个问题,即当有 misfired 的任务并且恢复执行时,该执行时间是随机的(取决于何时执行 misfired 的任务,例如某天的 3:00PM)。这会导致之后每天的执行时间都会变成 3:00PM,而不是我们原来期望的 1:00AM。

CronTirgger 类似于 LINUX 上的任务调度命令 crontab,即利用一个包含 7 个字段的表达式来表示时间调度方式。例如,"0 15 10 * * ? *" 表示每天的 10:15AM 执行任务。对于涉及到星期和月份的调度,CronTirgger 是最适合的,甚至某些情况下是唯一选择。例如,"0 10 14 ? 3 WED" 表示三月份的每个星期三的下午 14:10PM 执行任务。读者可以在具体用到该 trigger 时再详细了解每个字段的含义。

DateIntervalTrigger 是 Quartz 1.7 之后的版本加入的,其最适合调度类似每 N(1, 2, 3...)小时,每 N 天,每 N 周等的任务。虽然 SimpleTrigger 也能实现类似的任务,但是 DateIntervalTrigger 不会受到我们上面说到的 misfired 任务的影响。另外,DateIntervalTrigger 也不会受到 DST(Daylight Saving Time, 即中国的夏令时)调整的影响。笔者就曾经因为该原因将项目中的 SimpleTrigger 改为了 DateIntervalTrigger,因为如果使用 SimpleTrigger,本来设定的调度时间就会由于 DST 的调整而提前或延迟一个小时,而 DateIntervalTrigger 不会受此影响。

NthIncludedDayTrigger 的用途比较简单明确,即用于每隔一个周期的第几天调度任务,例如,每个月的第 3 天执行指定的任务。

本文转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/#ibm-pcon

共有 人打赏支持
这些年了1990
粉丝 9
博文 51
码字总数 11621
作品 0
徐汇
程序员
定时组件quartz系列quartz的集群原理

1、基本信息: Quartz是一个开源的作业调度框架,它完全由java写成,并设计用于J2Se和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它 来为执行一个作业而创建简单的或复杂的调...

无信不立
2016/01/20
0
0
分布式调度QUARTZ+SPRING

使用SPRING的定时任务框架,如果是在分布式的环境下,由于有多台节点,会产生相同的任务,会被多个节点执行,这时需引入分布式的QUARTZ。 触发器:存放时间排程 任务:蔟业务代码 排程器:负...

引鸩怼孑
2015/09/29
514
0
基于 Quartz 开发企业级任务调度应用

简介: Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。作为一个优秀的开源调度框架,Quartz 具有功能强大,应用灵活,易于集成的特点。本文剖析了 Qu...

IBMdW
2013/05/19
12.9K
29
quartz (从原理到应用)详解篇

目录: 一、Quartz 基本介绍 1.1 Quartz 概述 1.2 Quartz特点 1.3 Quartz 集群配置 二、Quartz 原理及流程 2.1 quartz基本原理 2.2 quartz启动流程 三、Spring + Quartz 实现企业级调度的实现...

为梦而来
2016/12/08
1K
7
quartz2.2 官方例子3

quartz 官方例子3 所需jar: quartz-2.2.0.jar quartz-jobs-2.2.0.jar slf4j-api-1.7.5.jar slf4j-log4j12-1.7.5.jar log4j-1.2.16.jar quartz.properties 配置: org.quartz.scheduler.inst......

fanson59
2013/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么 vue 默认导出的是 vue.common.js,它和 vue.js 的区别在哪里,又有什么关系?

这个问题在囧克斯的博客中有提到。 Vue 最早会打包生成三个文件,一个是 runtime only 的文件 vue.common.js,一个是 compiler only 的文件 compiler.js,一个是 runtime + compiler 的文件 ...

粒子数反转
24分钟前
3
0
php正则表达式替换图片地址

<?php /*PHP正则提取图片img标记中的任意属性*/ $str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正则提取或更改图片img标记中的任意属性<......

mdoo
28分钟前
2
0
一个简单的系统监控脚本

一个简单的系统信息监控脚本 #!/bin/bash# DATE:20181018# System monitor by Kxvzinterval=5while :doecho '==========================================================...

Kxvz
31分钟前
2
0
七牛云助你度寒冬 | 每天 10:24, 新用户抢全额免单

近年来,中美贸易战、股市暴跌、房地产变天、人民币贬值等等,企业艰难生存于冰川夹缝之中,融资发展难上加难。 凛冬将至, 七牛云特此推出免单好礼,为新用户(2018 年 10 月 10 日后新注册...

七牛云
32分钟前
1
0
Echarts X轴刻度标签换行显示

xAxis: [ { 'type':'category', splitLine: {show: false}, axisLabel: { show: true,//是否显示 interval:0,//强制显示 ......

郭周园
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部