`
xls
  • 浏览: 109923 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Quartz 定时器配置

阅读更多

Quartz 是一个完全由java编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。

由James House创建并最初于2001年春天被加入sourceforge工程。之后归入OpenSymphony开源组织(2010年11月份关闭)。Terracotta公司在2009年收购了著名的Java开源缓存项目Ehcache以及Java任务调度项目Quartz。

http://quartz-scheduler.org/downloads/catalog

版本:Quartz 2.1.7

1、开始时间 startAt
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
Date runTime = DateBuilder.evenSecondDate(new Date());
JobDetail job = JobBuilder.newJob(Job1.class).withIdentity("job1", "group1").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startAt(runTime).build();
sched.scheduleJob(job, trigger);
sched.start();

 

2、简单触发器 withSchedule
SimpleScheduleBuilder.simpleSchedule() 可以设置间隔、重复次数
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
JobDetail job = JobBuilder.newJob(Job2.class).withIdentity("job2", "group2").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger2","group2")
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(1).repeatForever()).build();
sched.scheduleJob(job, trigger);
sched.start();

 

3、Cron触发器
CronScheduleBuilder.cronSchedule("0/5 * * * * ?") 使用Unix cron表达式
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
JobDetail job = JobBuilder.newJob(Job3.class).withIdentity("job3", "group3").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger3","group3")
.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
sched.scheduleJob(job, trigger);
sched.start();

 

4、结束时间 endAt
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
Date runTime = DateBuilder.evenSecondDate(new Date());
Date endTime = DateBuilder.evenMinuteDate(new Date());
JobDetail job = JobBuilder.newJob(Job4.class).withIdentity("job4", "group4").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger4","group4")
.startAt(runTime).withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(1).repeatForever()).endAt(endTime).build();
sched.scheduleJob(job, trigger);
sched.start();

 

5、作业监听器 addJobListener
JobKey jobKey = new JobKey("dummyJobName", "group5");
JobDetail job = JobBuilder.newJob(Job5.class).withIdentity(jobKey).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName", "group5").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
// Listener attached to jobKeyscheduler.getListenerManager().addJobListener(new Job5Listener(),KeyMatcher.keyEquals(jobKey));
// Listener attached to group named "group 1" only.// scheduler.getListenerManager().addJobListener(// new HelloJobListener(), GroupMatcher.jobGroupEquals("group1")// );
scheduler.start();
scheduler.scheduleJob(job, trigger);

 

6、启动多个作业 scheduleJob
JobKey jobKeyA = new JobKey("job6A", "group6");
JobDetail jobA = JobBuilder.newJob(Job6A.class).withIdentity(jobKeyA).build();
JobKey jobKeyB = new JobKey("job6B", "group6");
JobDetail jobB = JobBuilder.newJob(Job6B.class).withIdentity(jobKeyB).build();
JobKey jobKeyC = new JobKey("job6C", "group6");
JobDetail jobC = JobBuilder.newJob(Job6C.class).withIdentity(jobKeyC).build();
Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName1", "group6").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
Trigger trigger2 = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName2", "group6").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
Trigger trigger3 = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName3", "group6").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(jobA, trigger1);
scheduler.scheduleJob(jobB, trigger2);
scheduler.scheduleJob(jobC, trigger3);

 

7、列举所有作业 getJobKeys
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
for (String groupName : scheduler.getJobGroupNames()) {for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {String jobName = jobKey.getName();
String jobGroup = jobKey.getGroup();
List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey);
Date nextFireTime = triggers.get(0).getNextFireTime();
System.out.println("[jobName] : " + jobName + " [groupName] : " + jobGroup + " - " + nextFireTime);
}}


8、手动触发作业 triggerJob
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
Date runTime = DateBuilder.evenSecondDate(new Date());
JobDetail job = JobBuilder.newJob(Job8.class).withIdentity("job8", "group8").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger8","group8").startAt(runTime).build();
sched.scheduleJob(job, trigger);
sched.start();
sched.triggerJob(new JobKey("job8", "group8"));
sched.triggerJob(new JobKey("job8", "group8"));

 

9、传递参数 usingJobData
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
Date runTime = DateBuilder.evenSecondDate(new Date());
JobDetail job = JobBuilder.newJob(Job9.class).withIdentity("job9", "group9").usingJobData("jobSays", "Hello Quartz!").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger9","group9").startAt(runTime).build();
sched.scheduleJob(job, trigger);
sched.start();

分享到:
评论

相关推荐

    quartz定时器配置与jar包

    本资料包将详细介绍如何在Spring框架中配置和使用Quartz定时器,并涉及到cron表达式的使用。 一、Quartz简介 Quartz是一个完全由Java编写的作业调度框架,能够精确地调度任务,支持简单或复杂的调度需求。Quartz的...

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...

    quartz定时器源码jar包下载

    作为一个专业的IT行业大师,我很高兴为你解析Quartz定时器的核心概念、功能以及如何通过源码学习。 Quartz定时器允许开发者创建、调度和管理任务,这些任务可以是简单的函数调用或者复杂的业务流程。它支持多种调度...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...

    Quartz定时器从入门到进阶

    Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...

    java Spring OpenSymphony的Quartz定时器的时间设置

    本文将重点探讨Quartz定时器的配置与使用,尤其是其时间设置的灵活性与精确性。 #### 二、Java Timer定时器简析 Java Timer定时器是一种较为基础的定时任务实现方式,它主要通过继承`java.util.TimerTask`类并重写...

    quartz定时器api

    Quartz定时器API是Java平台上一个强大的作业调度框架,它被广泛用于构建自动化任务和后台作业,例如数据备份、报表生成、系统维护等。Quartz提供了丰富的API来创建、管理和控制作业(Jobs)和触发器(Triggers),...

    Quartz定时器事例

    下面,我们将深入探讨Quartz定时器的工作原理、配置、API使用以及在实际项目中的应用案例。 1. **Quartz简介** - Quartz是一个基于JDBC存储的可扩展的作业调度框架,能够用于执行计划性的任务。 - 它支持复杂的...

    一个简单的quartz定时器的demo

    这个"一个简单的quartz定时器的demo"是展示如何在项目中集成和使用Quartz的基本步骤,包括创建任务、配置调度器以及管理任务的生命周期。 首先,Quartz的核心组件包括Scheduler(调度器)、Job(任务)和Trigger...

    spring boot集成quartz定时器

    本文将详细讲解如何在Spring Boot项目中集成Quartz定时器,以及如何利用Spring的依赖注入特性来实现Job。 一、集成Quartz定时器 1. 添加依赖:首先,你需要在Spring Boot项目的`pom.xml`或`build.gradle`文件中...

    Quartz定时器,表达式自动生成工具

    Quartz定时器是一款广泛应用于Java开发中的开源任务调度框架,其功能强大且灵活,能够帮助开发者轻松实现定时任务的管理。在Java应用中,我们常常需要执行一些周期性的任务,如数据备份、清理缓存或者发送邮件等,而...

    Spring Quartz定时器的jar包

    Spring Quartz定时器是Java开发中常用的一个任务调度框架,它结合了Spring框架的强大功能与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务。在这个压缩包中,包含了三个核心的jar文件:`quartz-all-...

    quartz定时器2.2.1JAR包

    Quartz定时器是一款开源的、功能强大的作业调度框架,它为Java应用程序提供了精确且可扩展的任务调度能力。在Java世界中,Quartz以其灵活性、稳定性和广泛的社区支持而备受推崇。2.2.1版本是Quartz的一个稳定版本,...

    spring quartz定时器的简单配置和使用

    本文将详细介绍如何在Spring项目中集成Quartz定时器,并通过一个简单的示例来进行演示。 #### 一、环境准备 为了能够顺利地运行示例代码,我们需要准备以下必要的依赖库: - `jta-1.1.jar`:用于事务管理。 - `...

    一个基础的Quartz定时器案例

    在这个基础的Quartz定时器案例中,我们将探讨如何使用Quartz API来创建、配置和执行定时任务。 首先,Quartz的核心组件包括Job(任务)、Trigger(触发器)和Scheduler(调度器)。Job是实际需要执行的任务,...

    quartz定时器不依赖任何框架

    Quartz定时器是一款强大且灵活的开源作业调度框架,它允许开发者在Java应用程序中安排复杂的任务执行。Quartz不依赖任何特定的Web或应用服务器框架,因此可以独立使用,这正是"quartz定时器不依赖任何框架"这个主题...

    配置Spring+quartz定时器.docx

    ### 配置Spring+Quartz定时器的知识点详解 #### 一、Quartz简介与应用场景 Quartz 是一个开源的任务调度框架,它提供了强大的任务调度功能,并且易于配置和使用。该框架支持复杂的循环调度策略,可以触发任务的...

    简单实现Spring Quartz定时器

    现在,当Spring启动时,Quartz定时器也会随之启动,并根据配置的Trigger执行Job。在Job中,你可以注入Spring的依赖,实现业务逻辑。例如: ```java @Override protected void executeInternal(JobExecutionContext ...

    Spring-quartz实现定时器(含代码)

    本文将深入探讨如何使用Spring整合Quartz来实现定时器,并提供相关代码示例。 首先,理解Spring框架。Spring是一个开源的Java平台,它提供了全面的企业级应用程序开发解决方案,包括依赖注入(DI)、面向切面编程...

    SpringQuartz定时器的配置[参照].pdf

    Spring Quartz 是一个集成在Spring框架中的任务调度库,它允许...然后,配置Spring的XML文件来设置定时器。在配置中,你需要定义`JobDetailBean`来指定任务类,并通过`CronTriggerBean`来设定调度规则。例如: ```xml ...

Global site tag (gtag.js) - Google Analytics