Quartz定时任务学习(五)触发器
顾名思义,Trigger(触发器)的责任就是触发一个 Job 去执行。当用 Scheduler 注册一个 Job 的时候要创建一个 Trigger 与这个 Job 相关联。Quartz 提供了四种类型的 Trigger,但其中两种是最为常用的,分别是下面的两种:SimpleTrigger 和 CronTrigger.
SimpleTrigger 是两个之中简单的那个,它主要用来激发单事件的 Job,Trigger 在指定时间激发,并重复 n 次--两次激发时间之间的延时为 m,然后结束作业。
CronTrigger 非常复杂且强大。它是基于通用的公历,当需要用一种较复杂的时间表去执行一个 Job 时用到。
为更简单的使用 Trigger,Quartz 包含了一个工具类,叫做 org.quartz.TriggerUtils.TriggerUtils 提供了许多便捷的方法简化了构造和配置 trigger.
首先说下SimpleTrigger实例化方式:
1、构造方法SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger", "triggerGroup-s1");
SimpleTrigger 提供了多种构造方法供实例化,可以通过设置属性值来设定触发器状态,具体可以参考API中SimpleTrigger
比如设置启动时间为当前时间:simpleTrigger.setStartTime(new Date());
设置执行间隔时间(毫秒)为10秒:simpleTrigger.setRepeatInterval(10000);
设置重复次数10次:simpleTrigger.setRepeatCount(10);
设置优先级simpleTrigger.setPriority(10);等等。
2、通过TriggerUtils的静态方法实例化,具体可以参考APITriggerUtils的静态方法
例如makeImmediateTrigger(String trigName, int repeatCount, long repeatInterval)
其中repeatCount如果为-1表示一直执行
repeatInterval表示执行次数
其中还包含很多类似方法,针对年月日周等不同情况来实例化触发器
3、通过web加载xml文件来配置,前面第二节中讲到web应用的简单示例。在定义XML的时候有如下触发器标签和内容
<trigger>
<cron>
<name>job1</name>
<group>group1</group>
<job-name>listener1</job-name>
<job-group>group1</job-group>
<cron-expression>0/10 * * * * ?</cron-expression>
</cron>
</trigger>
这种方式是下面要讲到的CronTrigger.触发器方式,而SimpleTrigger也有可以通过XML来配置,例如:
<trigger>
<simple>
<name>job1</name>
<group>group1</group>
<job-name>listener1</job-name>
<job-group>group1</job-group>
<start-time>2010-04-22 8:31:00 AM</start-time>
<repeat-count>-1</repeat-count>
<repeat-interval>10000</repeat-interval>
</simple>
</trigger>
注意红色标记部分。通过设置参数来实现触发时间和具体触发情况
CronTrigger实例化方式:
1、通过构造方法来实例化:
CronTrigger ct1 = new CronTrigger("cronTrigger1","defaultGroup");
CronExpression cexp1 = new CronExpression("0 45 7 * * ?");
ct1.setCronExpression(cexp1);
以上示例是设置每天早晨7.45分执行一次,具体的CronExpression可以参考API或者学习linux的crontab定时任务命令,定义具体差不多,还可以学习下linux的定时任务。
2.通过web加载XML。例如
<trigger>
<cron>
<name>job1</name>
<group>group1</group>
<job-name>listener1</job-name>
<job-group>group1</job-group>
<cron-expression>0/10 * * * * ?</cron-expression>
</cron>
</trigger>
表示每10秒执行一次
以上几种都在前面有例子了,下面给出CronTrigger实例化方式的构造方法例子:
public void task() throws SchedulerException {
CronTrigger ct1 = new CronTrigger("cronTrigger1","defaultGroup");
try {
CronExpression cexp1 = new CronExpression("0/10 * * * * ?");
ct1.setCronExpression(cexp1);
} catch (Exception e) {
e.printStackTrace();
}
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler= schedulerFactory.getScheduler();
JobDetail jobDetail = new JobDetail("jobDetail1", "jobGroup", MyJob1.class);
scheduler.scheduleJob(jobDetail, ct1);
scheduler.start();
}
Quartz定时任务学习(五)触发器的更多相关文章
- Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- Quartz定时任务学习(二)web应用
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- Quartz定时任务学习(七)Cron 触发器
Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 ...
- Quartz定时任务学习(一)简单任务
学习quartz首先了解三个概念: 调度器:负责调度作业和触发器: 触发器:设置作业执行的时间.参数.条件等:(简单触发器和Cron触发器) 作业:定时任务内容,被执行的程序: 下载必要的jar包,直 ...
- Quartz定时任务学习(九)Quartz监听器
Quartz 提供了三种类型的监听器:监听 Job 的,监听 Trigger 的,和监听 Scheduler 自已的. 本章解释如何应用每一种类型来更好的管理你的 Quartz 应用,并获悉到什么事件 ...
- Quartz定时任务学习(六)作业
org.quartz.Job 接口 把 Quartz 作用到 Java 类上唯一要做的就是让它实现 org.quartz.Job 接口.你的 Job 类可以实现任何其他想要的接口或继承任何需要的基类, ...
- Quartz定时任务学习(三)属性文件和jar
以下是我在应用的的一个基本配置: #---------调度器属性----------------org.quartz.scheduler.instanceName = TestSchedulerorg ...
- Quartz定时任务学习(四)调度器
org.quartz.Scheduler 类层次 作为一个 Quartz 用户,你要与实现了 org.quartz.Scheduler 接口的类交互.在你调用它的任何 API 之前,你需要知道如何创建 ...
- Java学习---Quartz定时任务快速入门
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
随机推荐
- 如何定时备份远程mysql数据库
通常,站长们都没有自己的服务器,每天都要手动备份数据库那也很麻烦.这里推荐一个方法,利用windows的计划任务来实现. 前提:本地机器上装有mysql服务. 假设本地机器上mysql服务目录 d: ...
- PHP javascript 值互相引用(不用刷新页面)
PHP javascript 值互相引用的问题 昨天通过EMAIL给一些公司投了简历,希望他们能给我一份工作,今天其中一家公司的人给我打电话,大意是要我做一点东西(与AJAX有关) 给他们看,我听 ...
- Highcharts 本地导出图片和PDF asp.net mvc版
啰嗦: 现在大家利用Highcharts开发时,有时候会遇到导出的功能问题,但是highcharts默认是链接自己的服务器上进行处理,但是有时候我们会连不上他的服务器,所以我们要让他在我们的服务器上进 ...
- Http 状态码详解
状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在 ...
- MYSQL数据库备份与恢复【转】
mysqldump -h主机名 -P端口 -u用户名 -p密码 (–database) 数据库名 > 文件名.sql 在window上需要通过CMD进入mysql安装目录下的bin目录下执行 ...
- VC菜菜鸟:建立第一个基于Visual C++的Windows窗口程序
建立第一个基于VisualC++的Windows窗口程序: 发表于:http://blog.csdn.net/it1988888/article/details/10306585 a)执行命令:新建 ...
- xHtml+css学习笔记
第一节 xHTML规范 *文档方面 -必须定义文档类型(DTD)和名字控件 *标签方面 -所有标签均要小写.关闭.合理嵌套.ID不能重复 -标签属性药有值,属性值要加印号且不能为空 -图片一定要加上a ...
- 【POJ 2486】 Apple Tree (树形DP)
Apple Tree Description Wshxzt is a lovely girl. She likes apple very much. One day HX takes her to a ...
- YIi 使用 beginContent() 和 endContent() 设定 Yii 的 layouts
Yii 的 views/layouts 是用来放置 layouts 的目录,在默认的情况下会有 main.php 和 column1.php 和 column2.php. main.php 内容定义了 ...
- BZOJ_3224_普通平衡树_(Treap)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3224 Treap模板题.支持如下几种操作: 1.插入; 2.删除; 3.rank(x); 4. ...