Java任务调度框架Quartz
2012-06-15 17:01
831 查看
最近的项目中应用到了Quartz框架,用下来觉得此框架非常的强大,无论是应用在桌面应用程序或者web程序中,都能够解决一些比较棘手的问题。例如在报表统计中,实时查询在大数据量的情况下速度慢的令人发指,单纯从SQL语句上进行优化仍然无法达到要求,这时候可以考虑设计日报表或者月报表,在凌晨进行统计,这时候就可以用Quartz框架进行此工作。(其实也可以在数据库中应用job做同样的工作,在此不讨论)。
Quartz一些基本概念
Quartz中主要有4个概念:调度器、任务、任务细节和触发器
Scheduler(调度器)是Quartz框架的核心,所有的任务计划都由调度器来进行最终控制,一般来说一个程序中只需要一个调度器,一个调度器中可以管理多个计划任务,每一个计划任务在Quartz中被切分为任务细节+执行计划,我们需要执行的代码通常是放置在JobDetail(任务细节)中执行,而执行计划通常指的是Trigger(触发器),每一对JobDetail+Trigger构成一个完整的计划任务,由调度器来负责执行。
Quartz使用
我使用的版本是2.0.2,要使用Quartz至少应该包括以下的Jar包和配置文件
quartz-all-2.0.2.jar --quartz通用包,包含所有常用quartz功能
log4j-1.2.14.jar --log4j日志
slf4j-api-1.6.1.jar --slf4j api,可以让我们自由使用java自带log,以及log4j包
slf4j-log4j12-1.6.1.jar --slf4j整合log4j
log4j.xml --log4j日志配置文件
quartz.properties --quartz配置文件
上代码:
Quartz一些基本概念
Quartz中主要有4个概念:调度器、任务、任务细节和触发器
Scheduler(调度器)是Quartz框架的核心,所有的任务计划都由调度器来进行最终控制,一般来说一个程序中只需要一个调度器,一个调度器中可以管理多个计划任务,每一个计划任务在Quartz中被切分为任务细节+执行计划,我们需要执行的代码通常是放置在JobDetail(任务细节)中执行,而执行计划通常指的是Trigger(触发器),每一对JobDetail+Trigger构成一个完整的计划任务,由调度器来负责执行。
Quartz使用
我使用的版本是2.0.2,要使用Quartz至少应该包括以下的Jar包和配置文件
quartz-all-2.0.2.jar --quartz通用包,包含所有常用quartz功能
log4j-1.2.14.jar --log4j日志
slf4j-api-1.6.1.jar --slf4j api,可以让我们自由使用java自带log,以及log4j包
slf4j-log4j12-1.6.1.jar --slf4j整合log4j
log4j.xml --log4j日志配置文件
quartz.properties --quartz配置文件
上代码:
package quartz; import static org.quartz.CronScheduleBuilder.cronSchedule; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import java.text.ParseException; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; public class QuartzDemo { public static void main(String[] args) throws SchedulerException { StdSchedulerFactory factory = new StdSchedulerFactory(); Scheduler scheduler = factory.getScheduler(); JobDetail job = newJob(MyJob.class) .withIdentity("job1", Scheduler.DEFAULT_GROUP).build(); try { Trigger trigger = newTrigger() .withIdentity("trigger1", Scheduler.DEFAULT_GROUP) .withSchedule(cronSchedule("* * * * * ?")).build(); scheduler.scheduleJob(job, trigger); } catch (ParseException e) { e.printStackTrace(); } catch (SchedulerException e) { e.printStackTrace(); } scheduler.start(); } }
package quartz; import java.util.Date; import org.apache.log4j.Logger; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class MyJob implements Job{ Logger logger = Logger.getLogger(MyJob.class); @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { logger.error(arg0.getJobDetail().getKey() +"调用计划任务在:" + new Date()); } }
相关文章推荐
- Java任务调度开源框架quartz学习
- Java任务调度框架Quartz教程实例
- (转)Java任务调度框架Quartz入门教程指南(四)Quartz任务调度框架之触发器精讲SimpleTrigger和CronTrigger、最详细的Cron表达式范例
- java计划任务调度框架quartz结合spring实现调度的配置实例代码
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- Quartz实现定时任务的配置方法(纯java作业调度框架)
- Java任务调度框架Quartz
- Java任务调度框架Quartz教程实例
- java任务调度框架Quartz讲解 java任务调度框架Quartz讲解
- java框架源码之Quartz(1):定时任务如何调度
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- Java项目中使用Quartz开源任务调度框架(SSH项目)
- Java任务调度框架Quartz(1)