城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

Quartz运务调度,看完这篇就够了

12月16日 相思宫投稿
  Quartz简介
  Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java。util。Timer。但是相较于Timer,Quartz增加了很多功能:
  持久性作业就是保持调度定时的状态;
  作业管理对调度作业进行有效的管理;Quartz运行环境。Quartz可以运行嵌入在另一个独立运行的程序中。Quartz可以在应用程序服务器(或servlet容器中)被实例化,并且参与事务。Quartz可以作为一个独立的应用程序运行。可以通过RMI使用。Quartz可以被实例化,作为独立的项目集群,用于任务执行。Quartz的设计模式。Builder模式Factory模式,工厂模式组件模式链式模式Quartz的核心概念
  1。任务job
  Job就是你想要实现的任务类。每一个Job必须实现的org。quartz。job接口。且需实现接口的Execute()方法。
  2。触发器Trigger
  Trigger为你执行任务的触发器,比如你想每天定时8点钟去打卡,Trigger就会设置在8点钟去执行该任务。
  Trigger主要有2种触发器器,分别为SimpleTrigger,CornTrigger两种。
  3。调度器Scheduler
  Scheduler为任务调度器,它将任务Job和触发器Trigger整合起来。负责基于Trigger设定的时间来执行job。Quartz的体系结构
  开启一个Quartz项目
  1。依赖dependencygroupIdorg。quartzschedulergroupIdquartzartifactIddependency
  2。编写jobpackagecom。keelon。quz。demo。importorg。quartz。Jimportorg。quartz。JobExecutionCimportorg。quartz。JobExecutionEimportjava。text。SimpleDateFimportjava。util。DpublicclassMyJobimplementsJob{Overridepublicvoidexecute(JobExecutionContextjobExecutionContext)throwsJobExecutionException{输出当前的时间的任务DatedatenewDate();SimpleDateFormatformatternewSimpleDateFormat(yyyymmddHH:MM:SS);StringdateStrformatter。format(date);System。out。println(正在进行数据库备份时间是:dateStr);}}
  3。调用。packagecom。keelon。quz。demo。importorg。quartz。;importorg。quartz。impl。StdSchedulerFpublicclassTestJob{publicstaticvoidmain(String〔〕args)throwsSchedulerException{SchedulerscheduledStdSchedulerFactory。getDefaultScheduler();JobDetailjobDetailbJobBuilder。newJob(MyJob。class)。withIdentity(job1,group1)。build();TriggertriggerTriggerBuilder。newTrigger()。withIdentity(trigger1,group1)。startNow()。withSchedule(SimpleScheduleBuilder。simpleSchedule()。withIntervalInSeconds(5)。repeatForever())。build();scheduled。scheduleJob(jobDetailb,trigger);scheduled。start();}}JobExecutionContext
  JobExecutionContext是一个包含了各种上下文信息的句柄,指向执行中的JobDetail实例和执行完成的Trigger实例
  当Schedule调用一个Job时,就会将JobExecutionContext传递给Job的exceute()方法。
  Job能够通过JobExecutionContext对象访问到Quartz运行时候的环境以及Job本身的数据明细。我可以通过这个context来访问Trigger,Jobs相关的信息。JobKeyjobKeyjobExecutionContext。getJobDetail()。getKey();log。info(工作任务的名称,jobKey。getName());TriggerKeytriggerKeyjobExecutionContext。getRecoveringTriggerKey();log。info(工作任务的工作组的名称,jobKey。getName());JobDataMap介绍
  1。使用Map获取
  在进行任务调度时,JobDataMap存储在JobExecutionContext中非常方便的进行获取。
  jobDataMap可以装载任何可序列化的对象。当job实例对象被执行的时候,这些参数会传递给Job
  放入参数SchedulerscheduledStdSchedulerFactory。getDefaultScheduler();JobDetailjobDetailbJobBuilder。newJob(MyJob。class)。withIdentity(job1,group1)。usingJobData(message,jobs)。build();TriggertriggerTriggerBuilder。newTrigger()。withIdentity(trigger1,group1)。startNow()。withSchedule(SimpleScheduleBuilder。simpleSchedule()。withIntervalInSeconds(5))。usingJobData(message,这是trigger)。build();scheduled。scheduleJob(jobDetailb,trigger);scheduled。start();
  取出参数StringmsgjobExecutionContext。getJobDetail()。getJobDataMap()。getString(message);Job有状态和无状态
  Job中有一个StatefulJob子接口,代表着有状态的任务,该接口是一个没有方法的标签接口,其目的就是让Quartz知道任务的类型,以便采用不同的执行方案。DisallowConcurrentExecution不允许并发执行,即JOB为串行执行。PersistJobDataAfterExecution在执行后将JobData持久化。
  无状态任务在执行时,拥有自己的JobDataMap拷贝,每次执行时,都会创建一个新的实例,对JobData的更改不会影响下次的执行。而有状态任务共享同一个JobDataMap实例,每次任务执行对JobDataMap所做的更改都会保存下来,后面的执行可以看到这个更改。也就是每次执行任务后都会对后面的执行发生影响。
  正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行。CronTrigger触发器
  如果你需要像日历一样,按照日程来触发任务,而不是像SimpleTrigger那样每隔定时间来触发,CornTrigger更加的实用。因为他是基于日历的作业调度器。
  使用CronTrigger,你可以指定每个周五中午,或者每个工作日的十点钟。或者每周一,像这样的日程安排触发。
  1。CronExpressionCron表达式
  Cron表达式是来配置,CronTrigger实例。Cron表达式是有7个子表达式组成的字符串,每个表达式都描述了一个单独的日程细节。这些表达式用空格来分割。分别表示如下
  1。Second秒
  2。Minutes分钟
  3。Hours小时
  4DayofMonth月中的每天
  5Month月
  6DayofWeek周中某天
  7Year年
  例如下面写一个每个9月19号,每5秒执行一次。DatestartDatenewDate();startDate。setTime(startDate。getTime()5000);DateendDatenewDate();endDate。setTime(endDate。getTime()10000);SchedulerscheduledStdSchedulerFactory。getDefaultScheduler();JobDetailjobDetailbJobBuilder。newJob(JobTrigger。class)。withIdentity(job1,group1)。build();TriggertriggerTriggerBuilder。newTrigger()。withIdentity(trigger1,group1)。startAt(startDate)。endAt(endDate)。withSchedule(CronScheduleBuilder。cronSchedule(05199?))。build();scheduled。scheduleJob(jobDetailb,trigger);scheduled。start();
投诉 评论 转载

从5988跌至2780,鸿蒙系统IP68曲面屏,从高端市场跌就在8月20日,HarmonyOS鸿蒙系统官方公布了HarmonyOS2的升级进展情况,已经有几十款华为手机可以升级HarmonyOS2正式版了,而且还有一些手机正在内测中,不……富士康真的造车了!前脸酷似小鹏雪铁龙的合体,定位四门轿跑日前,网络上曝光了一组富士康轿车的新车预告图。据悉,新车车身造型融入了跑车元素,预计尺寸与蔚来ET7等纯电中大型车相当,极具科技感。据悉,富士康除了推出轿车外,未来旗下还……低中高端电视究竟有哪些区别,如何分辨?相信如今很多的消费者都会用价格高低去评价一台电视的好坏,这种方式虽然算不上错但却很容易被误导,因为现在电视产品的种类太多,并且在做宣传的时候都会比较夸张地来突出电视产品,那么为……看天九共享建设数字化转型生态体系近日,工信部在推进实施中小企业数字化转型升级时明确表示,到2022年底,要组织数字化转型服务商为10万家以上中小企业提供数字化转型服务,推动10万家中小企业业务上云。在全……太阳能光伏发电应用与前景太阳能光伏发电概述太阳能是首屈一指的绿色能源,太阳能每秒钟到达地面的能量高达8105kW,假如把到达地球表面0。1的太阳能转为电能,转变率为5,每年发电量可达5。6101……买华为P50还是iPhone13?深度分析后给你答案今年下半年,苹果迎来了iPhone13系列的新5G手机,但华为并没有迎来Mate50的高端旗舰迭代。好在华为在9月份上市了华为P50也算是给了消费者多一个选择的机会,那么同为高……年内市值跌去2。8万亿后,阿里巴巴入局元宇宙,耗千万成立新公12月8日消息,AI财经社从天眼查App获悉,阿里巴巴成立全资子公司元境生生(北京)科技有限公司,注册资本1000万元,法定代表人为彭卫,经营范围包括软件开发、计算机系统服务和……Quartz运务调度,看完这篇就够了Quartz简介Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java。u……华为5G手机现货供应,6400万四摄8GB128GB,好评率你是不是经常听到这样的说法:对于电子产品,买新不买旧。其实,这个观点是非常片面的。这需要配合具体的情况,并不能以偏概全。要知道,某些手机更新换代后,在综合体验方面可能还不如旧款……麒麟970玩刺激战场能开多高画质?感谢您的阅读!麒麟970玩刺激战场可以开HDR高清。当然,一般帧数可以开到极限帧数,有机友提供了代码替换的方法,但是麒麟970确实比不能完全带的动。麒麟970……2022可入手的3款高性价比小屏旗舰!没有iPhone,只有在开始讲之前,小黄现在这里祝各位粉丝和机友元旦快乐!祝大家在2022年能够在机圈吃瓜吃饱,而且能够得到更多机圈小知识,变得更聪明更帅接下来进入正题,虽然我们已经迎来了2022年……思必驰完成4。1亿人民币新一轮融资苏州思必驰信息科技有限公司于近日完成E轮4。1亿元人民币融资,本轮融资由和利资本领投,北汽产投、中信金石等跟投。作为国内领先的对话式人工智能平台公司,思必驰历经十余年基础……
微信取消长期有效的小程序链接,最长30天(记住这3点建议)智能镜三大基础功能国外权威评测,2022年最佳拍照手机出炉,国产没让人失望微信收费是必然,继关不掉的广告之后,新服务最低收费130元让我们一起回顾了2011至2013年间风靡一时的智能手机冰箱零基础?别怕,4000字80图一文带你冰箱买的称心如意!准备好了吗?华为将于6月2日正式发布鸿蒙手机操作系统各个手机品牌的语音助手,你最喜欢哪一个?支付宝送你一个亿中国幸运锦鲤2021百度AI开发者大会在元宇宙举办无人艇技术接连催生国家科技大奖!精海系列已出第15号体验完OPPO的智能眼镜,我觉得手机厂商又有了卷的新方向
我国公司法人对年龄限制吗语文工作计划小狼路路的藏宝洞汽车轮胎质量排名情况很多人不懂炖鸡肉最忌这2味,做错等于白炖要珍惜现在所拥有的说说先有红绿灯还是先有汽车(有红绿灯)你会用ES6,那倒是用啊我推荐一个好地方我爱会飞的蒲公英小学作文400字129运动80周年活动策划书3篇中考现代文阅读常见错误及对策作文

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁