quartz使用(一)
在项目中经常会碰到定时任务,quartz是一款非常优秀的开源框架, 提供了定时任务的支持,还支持任务的持久化,并且提供了对数据库的支持。下面首先对quartz做一个简单介绍,并附上一个小例子。
1、下面是quartz的官网:
http://www.quartz-scheduler.org//,打开网址我们可以看到quartz最新的版本是2.2.3这里我也以此版本作为例子的环境。quartz从2.0版本其做了很大的改变,具体的变化可以自己查阅相关资料,在此不赘述。
2、我这里下载的是quartz-2.2.3-distribution.tar.gz,用解压缩工具解压出来得到如下图的文件目录结构,

docs:quartz的文档信息,包含了和数据库相关的建表sql;
examples:例子;
javadoc:使用java的doc,可以使用jd2chm工具转化为chm格式的文档;
lib:quartz的jar包,包含了使用quartz的所有包(依赖包和quartz的jar包);
licenses:许可文件;
src:quartz的源码;
3、从lib包里我们可以看到quartz的日志系统使用的是slf4j,但是其真正的日志系统是log4j,具体的日志框架描述,可以参看我别的文章。
4、quartz即可以用在java工程中,也可以用在javaweb项目中,这里以javaweb项目为环境做例子。
5、把quartz文件夹下的lib文件夹里的所有jar包放到项目的lib目录下。
6、经过上面的步骤就把quartz引入到了工程中。
下面是具体的例子的说明及代码:
一、首先,要创建一个任务,quartz规定任务必须实现org.quarta.Job接口,此接口就一个方法execute,这个方法就是任务执行的时候允许的方法,具体的业务实现在这个方法里,我这里只进行了简单的打印,
package com.cn.myScheduler; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("this is my first scheduler!");
} }
二、创建完任务之后,我们还要创建一个包含任务信息的jobDetail,一个管理任务执行的促发器trigger,最后就是调度任务,
package com.cn.myScheduler; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class TestMyJob {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//1、获得一个scheduler
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler scheduler =sf.getScheduler();
//2、获得一个jobDetail
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.build(); //3、获得一个trigger
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(40)
.withRepeatCount(10))
.build();
//4、把任务和触发器放到scheduler中
scheduler.scheduleJob(job, trigger);
//5、开始任务调度
scheduler.start();
}
catch(SchedulerException e){
e.printStackTrace();
}
} }
注释1:创建一个scheduler,scheduler负责所有任务的调度。
注释2:创建一个包含任务信息的jobDetail,指定任务的实现类为MyJob.class,使用withIdentity方法指定任务名称,还可以用第二个参数指定任务的组名
注释3:创建一个任务促发器,指定了促发器的名称“trigger1”和促发器的组名“group1”;设置了促发的时间为当前促发,且每隔40S执行一次,一共执行10次
注释4:把jobDetail和trigger放到scheduler中
注释5:启动scheduler
运行程序可以看到程序的输出。
以上就是一个简单的quartz定时任务。
有关quartz的内容会持续更新!
谢谢!
quartz使用(一)的更多相关文章
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...
- Spring Quartz实现任务调度
任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...
- topshelf和quartz内部分享
阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows ...
- Quartz.net持久化与集群部署开发详解
序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...
- Quartz.net开源作业调度框架使用详解
前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...
- quartz.net 时间表达式----- Cron表达式详解
序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无 ...
- Quartz.NET Windows 服务示例
想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度引入进来了,那今天就简单的介绍一下 Quartz ...
- [Quartz笔记]玩转定时调度
简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...
- 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能
Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...
随机推荐
- 一次流量稍高导致web项目慢的问题&解决
项目上线后,用户越来越多,有一天出现一个issue:用户访问特别慢. 首先介绍下架构: haproxy/Nginx / \ node1 node2 | | redis redis(slave) | | ...
- Ranorex 5 发布,支持SAP、Oracle Forms、MS Dynamics等
Ranorex 5 发布,支持SAP.Oracle Forms.MS Dynamics等 http://blog.csdn.net/testing_is_believing/article/detai ...
- Mono.Posix.dll文件
http://www.mono-project.com/ 安装后,可以安装目录下找到
- Ubuntu下PHP的扩展
Ubuntu版本:14.04 1. 下载php-5.5.10.tar.bz2,并解压. 2. 终端进入解压后的目录php-5.5.10,运行configure.(输入命令./configure) 3 ...
- pptv破解版程序,能够免费观看所有蓝光和会员影片!
pptv破解版程序,能够免费观看所有蓝光和会员影片!PPTV网络电视3.4.1.0012绿色版(去广告本地vip版)由Black Hawk精简破解,去掉播放时缓冲.暂停广告.去掉迷你推荐和推荐弹窗.禁 ...
- 有了Hadoop MapReduce, 为什么还要Spark?
a. 由于MapReduce的shuffle过程需写磁盘,比较影响性能:而Spark利用RDD技术,计算在内存中进行. b. MapReduce计算框架(API)比较局限, 而Spark则是具备灵活性 ...
- Core Animation 学习
core animation 是在UIKit层之下的一个图形库,用于在iOS 和 OS X 实现动画. Core Animation管理App内容 core animation不是一个完整的绘图系统, ...
- 浅谈mysql的两阶段提交协议
前两天和百度的一个同学聊MySQL两阶段提交,当时自信满满的说了一堆,后来发现还是有些问题的理解还是比较模糊,可能是因为时间太久了,忘记了吧.这里再补一下:) 5.3.1事务提交流程 MySQL的事务 ...
- 组合数学 - 母函数的变形 --- hdu 1171:Big Event in HDU
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 【.NET框架】Dapper ORM 用法—Net下无敌的ORM
假如你喜欢原生的Sql语句,又喜欢ORM的简单,那你一定会喜欢上Dapper这款ROM.点击下载 Dapper的优势: 1,Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,编 ...