1、quarz对java1.5实现的简单调度做了封装
/**
* quartz对任务调度进了高度抽象: 1调度器;2任务;3触发器
* Job接口(任务):定义需要调度的任务
* JobDetail(任务实例):Job在创建时,不是直接接受一个job实例,而是接受一个job实现类, jobdetail实现了这一个角色
* Trigger:触发器
* Calendar:更仔细的触发器
* Scheduler:Quartz运行容器,任务和触发器可以注册到容器中
* ThreadPool:容器通过一个共享线程池,提高运行效率
*
* @param args
*/
2、简单实现
package java_source_codes_quartz; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.impl.JobDetailImpl; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.triggers.SimpleTriggerImpl; public class SimpleTriggerRunner { public static void main(String[] args) throws SchedulerException { //创建一个jobdetail实例 JobDetail jobDetail = new JobDetailImpl("job1_1","jgroup1", SimpleJob.class); //创建一个触发器实例 //还有更详细的触发器:CronTrigger SimpleTrigger simpleTrigger = new SimpleTriggerImpl("tigger1_1", "tgroup1"); SchedulerFactory schFactory = new StdSchedulerFactory(); Scheduler scheduler = schFactory.getScheduler(); scheduler.scheduleJob(jobDetail, simpleTrigger); scheduler.start(); } }
package java_source_codes_quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class SimpleJob implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub System.out.println(arg0.getTrigger().getCalendarName()); System.out.println(arg0.getJobRunTime()); System.out.println(arg0.getFireInstanceId()); System.out.println(arg0.getFireTime()); System.out.println(arg0.getJobDetail()); System.out.println(arg0.toString()); } }
这是一个简单实现,大概知道用quartz怎么去实现一个调度,具体在实际环境中可以用spring的bean实例的初始化做一个lisenter监听时间。实现调度。spring也对quartz做了集成处理,但是本人觉得
写代码不是写配置文件,不是配置文件能解决需要重复造轮子的工作,我一般不会用配置文件。
3、调度器的集群实现方案
1、将调度事件放在一台独立的服务器上,不受集群环境影响
2、实现quartz的集群调度解决方案