定时任务设计(二):Quartz
来源:互联网 发布:大数据考证 编辑:程序博客网 时间:2024/05/21 17:10
核心接口和类
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接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。
Quartz任务调度设计:
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.SimpleThreadPoolorg.quartz.threadPool.threadCount = 10org.quartz.threadPool.threadPriority = 5org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true#配置任务存储方式org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore #或者,使用数据库存储,集群必须使用org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTXorg.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegateorg.quartz.jobStore.tablePrefix = QRTZ_org.quartz.jobStore.maxMisfiresToHandleAtATime = 10#漏发处理时间阈值org.quartz.jobStore.misfireThreshold = 60000#集群配置org.quartz.jobStore.isClustered = true org.quartz.jobStore.clusterCheckinInterval = 20000
集群
架构:
- LB:谁先触发谁执行,并且一次只有一个scheduler触发。
- 故障处理Fail-Over : 当一个scheduler失败后,其它的实例可以发现那些执行失败的Jobs,假如Job对应的JobDetail标记为recovery(属性”requests recovery”),那么该Job就会被其它的实例重新执行,否则对应的Job只会被释放等待下次被触发。
数据模型
主要表描述
线程模型
注意点:
- 不在不同的机器上实现集群功能,除非他们的时钟同步精确到秒
- 不实现集群的实例不使用同一套表
- 定时任务设计(二):Quartz
- quartz系列(二):动态定时任务管理
- quartz配置发布定时任务(二)
- quartz定时任务
- Spring+Quartz定时任务
- Quartz定时任务初学
- Quartz 定时任务
- spring quartz 定时任务
- Spring-quartz定时任务
- spring 定时任务 quartz
- Quartz定时任务学习
- Quartz定时任务学习
- spring quartz 定时任务
- spring Quartz 定时任务
- spring+quartz定时任务
- 定时任务 quartz使用
- quartz 定时任务
- Quartz定时任务配置
- BZOJ 3669 . JZOJ 3754. 【NOI2014】魔法森林
- 一个jsp页面引入另一个jsp页面的三种方式 及静态引入和动态引入的区别
- Learning NServiceBus Sagas.pdf 英文原版 免费下载
- 例题8-12 奇怪的气球膨胀 UVa12627
- HYNU 第三次周赛
- 定时任务设计(二):Quartz
- Java面试近一个月的面试总结
- MYSQL中竖表转横表
- 数组和集合的相互转换
- 计算机视觉相关领域的网站链接
- Elasticsearch Blueprints.pdf 英文原版 免费下载
- 即时通讯-语音录制及播放
- Spotfire使用经验-在Cross Table(Pivot Table,透视表)中动态计算比例
- 为什么创建类的时候要用new?