- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Quartz处理定时任务的核心概念
核心概念
1.Job:Job是任务执行的流程,是一个类
2.JobDetail:JobDetail是Job是实例,是一个对象,包含了该实例的执行计划和所需要的数据
3.Trigger:Trigger是定时器,决定任务何时执行
4.Scheduler:调度器,调度器接受一组JobDetail+Trigger即可安排一个任务,其中一个JobDetail可以关联多个Trigger
实例
1.初始化:
1
2 Scheduler?scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start(); 当程序退出时,应该主动调用shutdown()方法关闭该调度器。
2.Job:
一个Job类需要实现org.quartz.Job接口,这个接口值需要实现一个方法即可:
1 void execute(JobExecutionContext context)?throws JobExecutionException context是重要的上下文,可以访问到关联的JobDetail对象和本次触发的Trigger对象,以及在此之上设定的数据。
3.JobDetail:
可以使用JobBuilder来构建一个JobDetail对象:
1
2
3
4
5
6
7 JobDetail job = JobBuilder.newJob(MyJob.class) // MyJob是我实现的Job类
????.withIdentity(myjob) // 可以给该JobDetail起一个id,便于之后的检索
????.requestRecovery() // 执行中应用发生故障,需要重新执行
????.storeDurably() // 即使没有Trigger关联时,也不需要删除该JobDetail
????.usingJobData(key1, value1)
????.usingJobData(key2, value2) // 以Key-Value形式关联数据
????.build(); Quartz因为考虑到有些任务不是幂等的,不可以多次重复执行,所以默认没有开启“requestRecovery”。当确认业务中允许一次任务执行两次的情况下,可以开启该选项,则任务肯定不会因为应用停止而漏调用,但缺点就是,有可能会重复调用。
每个JobDetail内都有一个Map,包含了关联到这个Job的数据,在Job类中,可以通过context取出该数据,进行业务流程处理。
4.Trigger:
可以使用TriggerBuilder来构建一个Trigger对象:
1
2
3
4
5
6
7
8 Trigger trigger = TriggerBuilder.newTrigger()
????.forJob(myjob) // 关联上述的JobDetail
????.withIdentity(myjob-trigger1) // 给该Trigger起一个id
????.startAt(DateBuilder.futureDate(20, IntervalUnit.SECOND)) // 延迟20秒开始
????.withSchedule(SimpleScheduleBuilder.repeatMinutelyForever()) // 每分钟触发一次,无限循环
????.usingJobData(key3, value3)
????.usingJobData(key4, value4) // 以Key-Value形式关联数据
????.build(); 5.设定:
因为上述的Trigger已经关联了JobDetail,可以使用
1 scheduler.scheduleJob(trigger); 把这一组JobDetail和Trigger加载到调度器上,接下来就会按照计划执行Job任务。
6.配置文件:
配置文件不是必须的,Quartz对配置项都是有默认值的,当需要自定义的时候,可以在classpath路径下放一个quartz.properties文件,Quartz的StdSchedulerFactory在启动时会自动加载该配置文件。
比较值得关注的是这两个配置项:
1
2 org.quartz.threadPool.threadCount=50
org.quartz.scheduler.batchTriggerAcquisitionMaxCount=50 第一个配置项是线程池里的线程数,默认值是10,当执行任务会并发执行多个耗时任务时,要根据业务特点选择线程池的大小。
第二个配置是,当检查某个Trigger应该触发时,默认每次只Acquire一个Trigg
您可能关注的文档
- Kacsuk Analysis and Improvement of the Variable Binding Scheme in LOGFLOW.pdf
- KDP晶体单点金刚石切削加工表层力学性能的研究.pdf
- KDP晶体单点金刚石车削表面形貌分形分析.pdf
- KDP晶体生长工艺研究.pdf
- KDP晶体生长过程中溶液稳定性的研究.pdf
- KDP晶体电光效应.doc
- kk一热液金矿床原生叠加晕的理想模式李惠(.pdf
- KeYongJianResearchTrendOfPPPinConstructionJournals.pdf
- KPCA和RSVM结合处理大规模问题研究.pdf
- LabVIEW调用MATLAB进行图像处理的实现.pdf
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)