`
eksliang
  • 浏览: 598902 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Quartz——SimpleTrigger触发器

阅读更多

转载请出自出处:http://eksliang.iteye.com/blog/2208166

一.概述

SimpleTrigger触发器,当且仅需触发一次或者以固定时间间隔周期触发执行;

 

二.SimpleTrigger的构造函数

  1. SimpleTrigger(String name, String group):通过该构造函数指定Trigger所属组和名称;
  2. SimpleTrigger(String name, String group, Date startTime):除指定Trigger所属组和名称外,还可以指定触发的开发时间;
  3. SimpleTrigger(String name, String group, Date startTime, Date endTime, int repeatCount, long repeatInterval):除指定以上信息外,还可以指定结束时间、重复执行次数、时间间隔等参数;
  4. SimpleTrigger(String name, String group, String jobName, String jobGroup, Date startTime, Date endTime, int repeatCount, long repeatInterval):这是最复杂的一个构造函数,在指定触发参数的同时,还通过jobGroup和jobName,让该Trigger和Scheduler中的某个任务关联起来。

三.参考实例

    简单的Job实现类:打印任务详情

 

package com.ickes.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
 * 实现Job接口,定义运行的任务
 * @author Ickes
 */
public class SimpleJob implements Job {

	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		//打印任务详情
		System.out.println(
				context.getJobDetail().getGroup() 
				+"——"+context.getJobDetail().getName()
				+"——"+context.getTrigger().getName()
				+"——"+context.getTrigger().getGroup());
	}

}

 

 

   使用SimpleTrigger进行调度(实例一)

 

package com.ickes.job;

import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @author Ickes
 */
public class SimpleTriggerDemo {
	public static void main(String[] args) throws Exception {
		//第一步:创建一个JobDetail实例
		JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class);
		//第二步:通过SimpleTrigger触发器定义调度规则:马上启动,每2秒运行一次,共运行100次
		SimpleTrigger simpleTrigger = new SimpleTrigger("t_job1","t_group_1");
		simpleTrigger.setStartTime(new Date());//开始运行时间
		simpleTrigger.setRepeatInterval(2000); //运行间隔单位为毫秒
		simpleTrigger.setRepeatCount(100);     //运行次数
		//第三步:通过SchedulerFactory获取一个调度器实例
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		Scheduler scheduler = schedulerFactory.getScheduler();
		//第四步:将job跟trigger注册到scheduler中进行调度
		scheduler.scheduleJob(jobDetail, simpleTrigger);
		//第五步:调度启动
		scheduler.start();
	}
}

    上面代码也可以通过SimpleTrigger的setStartTime(java.util.Date startTime)和setEndTime(java.util.Date endTime)指定运行的时间范围,当运行次数和时间范围冲突时,超过时间范围的任务运行不被执行。如可以通过simpleTrigger.setStartTime(new Date(System.currentTimeMillis() + 60000L))指定60秒钟以后开始。

 

    使用SimpleTrigger进行调度(实例二)

 

package com.ickes.job;

import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @author Ickes
 */
public class SimpleTriggerDemo1 {
	public static void main(String[] args) throws Exception {
		//第一步:创建一个JobDetail实例
		JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class);
		SimpleTrigger simpleTrigger = new SimpleTrigger("trigger1_1","tgroup1");
		simpleTrigger.setStartTime(new Date());//开始运行时间
		simpleTrigger.setRepeatInterval(2000); //运行间隔单位为毫秒
		simpleTrigger.setRepeatCount(100);     //运行次数
		simpleTrigger.setJobGroup("j_group1");
		simpleTrigger.setJobName("j_job1");
		//第三步:通过SchedulerFactory获取一个调度器实例
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		Scheduler scheduler = schedulerFactory.getScheduler();
		//第四步:将job跟trigger注册到scheduler中进行调度
		scheduler.addJob(jobDetail, true);
		scheduler.scheduleJob(simpleTrigger);
		//第五步:调度启动
		scheduler.start();
	}
}

 

   实例一与实例二的区别很明显:注册job跟trigger到scheduler中的方式不同

 

 四.TriggerUtils工具类

在构造Trigger实例时, 可以考虑使用org.quartz.TriggerUtils工具类,该工具类不但提供了众多获取特定时间的方法,还拥有众多获取常见Trigger的方法。

参考实例如下

package com.ickes.job;

import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.TriggerUtils;
/**
 * 
 * @author Ickes
 *
 */
public class TriggerUtilsDemo {
	public static SimpleDateFormat fomat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	/**
	 * 方法太多,但是他的注释非常详细
	 * @param args
	 */
	public static void main(String[] args) {
		//创建一个每秒执行一次的Trigger
		TriggerUtils.makeSecondlyTrigger("t_name");
		//创建一个每星期某一特定时间点执行一次的Trigger
		TriggerUtils.makeWeeklyTrigger("t_name", 1, 1, 1);
		//创建一个每5秒执行一次,总共执行10次的Trigger
		TriggerUtils.makeSecondlyTrigger("t_name",5,10);
		//获得时间的方法
		println(TriggerUtils.getDateOf(0, 0, 0));
		//返回下一个小时的时间,例如2015-05-04 11:20:00 返回2015-05-04 12:00:00
		println(TriggerUtils.getEvenHourDate(new Date()));	
	}
	
	public static void println(Date date){
		System.out.println(fomat.format(date));
	}
}

 

 

1
0
分享到:
评论

相关推荐

    quartz的项目源码——用于和文章配套学习

    - 定义Trigger:通过实现`org.quartz.Trigger`接口,或使用更常见的`CronTrigger`或`SimpleTrigger`,设置触发规则。 4. **调度Job** - 使用`Scheduler`的`scheduleJob()`方法将Job与Trigger关联,从而将其加入到...

    Quartz Job Scheduling Framework第5章翻译初稿

    在本章中,我们将深入探讨Quartz的核心特性之一——Cron Triggers,以及与之相关的其他调度策略。 首先,Cron Triggers是Quartz中的关键组件,它们基于Unix cron表达式来定义作业的执行时间。Cron表达式由7个子字段...

    quartz定时调度完整实例

    5. **Quartz实战——QuartzDemo** - `QuartzDemo`可能包含一个或多个示例,演示如何创建Job、Trigger和Scheduler。 - 示例可能包括简单定时任务,如每隔一段时间执行一次,以及复杂的Cron表达式触发的任务。 - 还...

    quartz的helloworld

    这个"quartz的helloworld"示例旨在教你如何在Tomcat服务器上配置和使用Quartz来定期执行一个简单的任务——每五秒钟打印出"Hello, World!"。 首先,Quartz的核心概念包括Job(工作)和Trigger(触发器)。Job是实际...

    Quartz jar包

    这个jar包包含Quartz的核心库,以及两个重要的依赖库——jta.jar和slf4j.jar。 首先,我们来详细了解Quartz。Quartz提供了一个完全配置的、可扩展的任务调度系统,能够按照预定的时间间隔或特定的日期执行任务。它...

    Quartz 定时程序框架

    Quartz提供了多种类型的Trigger,如SimpleTrigger(简单触发器)、CronTrigger(cron表达式触发器)等。SimpleTrigger用于设置任务执行的间隔时间,而CronTrigger允许我们使用类似Unix cron表达式的方式来定义任务的...

    j2ee spring quartz

    标题 "j2EE Spring Quartz" 暗示了我们即将探讨的是Java企业级应用开发中的一个关键组件——Spring框架与Quartz作业调度器的整合。Quartz是一个强大的、开源的作业调度框架,常用于在Java应用程序中安排任务执行。而...

    Quartz Scheduler详解

    Quartz提供了多种类型的触发器,比如SimpleTrigger和CronTrigger。SimpleTrigger用于执行一次或者在固定间隔重复执行的简单作业,而CronTrigger则根据Cron表达式来定义触发时间。 3. **作业详情(JobDetail):** ...

    Quartz Scheduler入门

    Quartz提供了多种Trigger类型,如SimpleTrigger(简单触发器)和CronTrigger(cron表达式触发器)。SimpleTrigger允许设置固定的延迟和重复间隔,而CronTrigger则允许按照特定的时间模式(类似于Linux的cron)来执行...

    quartz web 排程

    - Quartz提供了一个Web界面(JDBCJobStore和RAMJobStore支持)—— Quartz Admin,可以用来查看和管理调度的作业和触发器。 - 也可以通过API或者JMX来动态修改调度设置。 8. **Quartz与Web应用的结合**: - 在...

    Quartz任务调度快速入门

    Quartz通过其核心概念——调度器、任务和触发器——提供了一套完整且灵活的任务调度解决方案。开发者可以通过实现 `Job` 接口定义具体的任务逻辑,并通过配置 `Trigger` 和 `Calendar` 灵活地控制任务的执行时机。...

    quarz分布式定时任务

    Quartz提供了多种触发器类型,其中`SimpleTrigger`和`CronTrigger`最为常用。 ### Spring与Quartz集成 Spring框架提供了对Quartz的支持,简化了其配置和使用过程。通过Spring的配置文件可以方便地定义作业、触发器...

    spring 调度实例

    创建一个`quartz.properties`文件,设置Quartz的相关配置,如Job存储、触发器策略等。 3. **配置Spring与Quartz** 在Spring配置文件中,配置Quartz的SchedulerFactoryBean,并指定配置文件: ```xml ...

Global site tag (gtag.js) - Google Analytics