Scheduler接口:调度器接口,包含任务的调度管理;
Job接口:自定义的“定时程序”实现此接口的void execute(JobExecutionContext arg0)方法,Job还有一类为有状态的StatefulJob接口,如果我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要实现此接口。
JobDetail类:具体某个定时程序的详细描述,包括Name,Group,JobDataMap等。
JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例如String,float等,也可为某个对象的引用.
Trigger抽象类:调度类(Scheduler)在时间到时调用此类,再由trigger类调用指定的定时程序。 Quertz中提供了两类触发器为: - SimpleTrigger 简单的定时功能 - CronTrigger 使用表达式来描述定时功能,因此适用于比较复杂的定时描述, 例如每个月的最后一个周五,每周的周四等。
JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。
JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。
Job与Trigger解藕,实现N个任务和M个触发规则自由组合;
Scheduler扮演“指挥官”的角色,统筹调度。对触发规则进行全面的管理,例如优先级、错失触发、线程分配等等:
默认加载顺序: 优先顺序 Classpath:quartz.properties –> org/quartz/quartz.properties (quartz lib)
#调度器名,默认名是QuartzScheduler,集群下要求相同 org.quartz.scheduler.instanceName = Scheduler1 org.quartz.scheduler.instanceId = AUTO #配置线程池 org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 10 org.quartz.threadPool.threadPriority = 5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true #配置任务存储方式 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore #或者,使用数据库存储,集群必须使用 org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore.tablePrefix = QRTZ_ org.quartz.jobStore.maxMisfiresToHandleAtATime = 10 #漏发处理时间阈值 org.quartz.jobStore.misfireThreshold = 60000 #集群配置 org.quartz.jobStore.isClustered = true org.quartz.jobStore.clusterCheckinInterval = 20000主要表描述
注意点:
不在不同的机器上实现集群功能,除非他们的时钟同步精确到秒不实现集群的实例不使用同一套表