范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

  Quartz简介
  Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由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.依赖     org.quartz-scheduler     quartz 
  2.编写jobpackage com.keelon.quz.demo.job; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.text.SimpleDateFormat; import java.util.Date; public class MyJob implements Job {     @Override     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {         //输出当前的时间的任务         Date date = new Date();         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd HH:MM:SS");         String dateStr = formatter.format(date);         System.out.println("正在进行数据库备份"+"时间是:"+dateStr);      } }
  3.调用。package com.keelon.quz.demo.job;  import org.quartz.*; import org.quartz.impl.StdSchedulerFactory;  public class TestJob {      public static void main(String[] args) throws SchedulerException {         Scheduler scheduled = StdSchedulerFactory.getDefaultScheduler();         JobDetail jobDetailb = JobBuilder.newJob(MyJob.class).withIdentity("job1","group1").build();         Trigger trigger = TriggerBuilder.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相关的信息。  JobKey jobKey = jobExecutionContext.getJobDetail().getKey();  log.info("工作任务的名称",jobKey.getName());   TriggerKey triggerKey =jobExecutionContext.getRecoveringTriggerKey();   log.info("工作任务的工作组的名称",jobKey.getName()); JobDataMap介绍
  1.使用Map获取
  在进行任务调度时,JobDataMap存储在JobExecutionContext中非常方便的进行获取。
  jobDataMap可以装载任何可序列化的对象。当job实例对象被执行的时候,这些参数会传递给Job
  放入参数Scheduler scheduled = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetailb = JobBuilder.newJob(MyJob.class).withIdentity("job1","group1").usingJobData("message","jobs").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startNow()         .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5)).usingJobData("message","这是trigger").build(); scheduled.scheduleJob(jobDetailb,trigger); scheduled.start();
  取出参数String msg = jobExecutionContext.getJobDetail(). getJobDataMap().getString("message");Job有状态和无状态
  Job中有一个StatefulJob子接口,代表着有状态的任务, 该接口是一个没有方法的标签接口 ,其目的就是让Quartz知道任务的类型,以便采用不同的执行方案。 @DisallowConcurrentExecution 不允许并发执行,即JOB为串行执行。@PersistJobDataAfterExecution 在执行后将JobData持久化。
  无状态任务在执行时,拥有自己的JobDataMap拷贝,每次执行时,都会创建一个新的实例,对JobData的更改不会影响下次的执行。而有状态任务共享同一个JobDataMap实例,每次任务执行对JobDataMap所做的更改都会保存下来,后面的执行可以看到这个更改。也就是每次执行任务后都会对后面的执行发生影响。
  正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行。CronTrigger触发器
  如果你需要像日历一样,按照日程来触发任务,而不是像SimpleTrigger那样每隔定时间来触发,CornTrigger更加的实用。因为他是基于日历的作业调度器。
  使用CronTrigger,你可以指定"每个周五中午",或者每个工作日的十点钟。或者每周一,像这样的日程安排触发。
  1.Cron Expression -Cron表达式
  Cron表达式是来配置,CronTrigger实例。Cron表达式是有7个子表达式组成的字符串,每个表达式都描述了一个单独的日程细节。这些表达式用空格来分割。分别表示如下
  1.Second 秒
  2.Minutes 分钟
  3.Hours小时
  4 Day of Month 月中的每天
  5 Month 月
  6 Day of Week 周中某天
  7 Year 年
  例如下面写一个每个9月19号,每5秒执行一次。Date startDate = new Date(); startDate.setTime(startDate.getTime()+5000);  Date endDate = new Date(); endDate.setTime(endDate.getTime()+10000);  Scheduler scheduled = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetailb = JobBuilder.newJob(JobTrigger.class).withIdentity("job1","group1").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startAt(startDate).endAt(endDate)         .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * 19 9 ?")).build(); scheduled.scheduleJob(jobDetailb,trigger); scheduled.start();

真AI科技傍身COLMO要把营养师装进冰箱里无人驾驶AIoT手机等应用了AI技术的产品以及理念,已经成为很多人生活中不可或缺的一部分。如果让消费者说到底什么是AI?除了脑中会浮现出人工智能四个字以外,好像也没有太多可以诠释的终于等到了!华为WATCHD发布最合适高血压人群的智能穿戴产品终于等到了!华为冬季旗舰新品发布会上,有一个对于高血压人群最好用的智能穿戴产品正式推向市场后,我相信和我一样惊呼终于等到的同学应该不少,毕竟,家里的长辈到了一定年纪之后有类似情况的2022年,待在家里感觉更舒适让待在家里感觉更舒适2021年全球受到新冠疫情的影响,人们大量的减少公众场所聚会等活动,大部分时间都呆在家里,科技公司也注意到了这一点。他们正在推出更多相关产品。今天我们来看看CF新能源别克微蓝7纯电动SUV别克的新能源车型中的SUV,纯电动的微蓝7,外观时尚有运动感。车身颜色是天空的蓝色,干净纯粹,搭配黑色的装饰条和黑色内饰,还有区别于别克其他车型的前脸造型设计,车头的车灯是左右贯穿大事化小,小事化了,这就是联想最最想要的效果最近,联想的热度似乎慢慢降下来了,之前人们对它的口诛笔伐也告一段落,在信息多如牛毛,且瞬息万变的当今社会,在正常不过了,热度一过,马上被新的热点头条所取代,这大概就是联想的策略以不技巧大集合,熬夜总结53个Python使用技巧和攻击方法1。易重构本节对一些Python重整的操作进行对比。1。1有放回随机样本和无放回随机样本私信小编01即可获取大量python学习资源随机导入random。choices(seq,k满满干货!20个Python使用的小技巧1。易混淆操作本节对一些Python易混淆的操作进行对比。1。1有放回随机采样和无放回随机采样importrandomrandom。choices(seq,k1)长度为k的list2021中国公路学会智慧交通年会发布准全天候通行解决方案12月5日至7日,2021中国公路学会智慧交通年会在广西南宁顺利召开。在广西沙吴路智慧高速现场,会上发布准全天候通行解决方案,该解决方案旨在减少或消除高速公路雾天封路,提升道路的通树根互联发布云澈安全解决方案,打造工业互联网安全新底座2022年新年伊始,工业互联网领军者树根互联发布新安全公共服务平台解决方案云澈。据悉,云澈是国内工业互联网首个安全公共服务平台,它的发布弥补了行业的空白,将成为国内工业互联网安全的Rust学习笔记(十三)match(模式匹配)match在Rust中是一个强大的控制流运算符。match允许一个值与一系列模式进行匹配,并执行成功匹配上的模式对应的代码。模式可以是字面值变量名通配符例enumCoinPenny万物到家催热即时零售平台加码前置仓模式近期,美团闪购在武汉的一场发布会上,宣布了持续加码美团闪店仓的计划,表示将以放水养鱼的方式涵养这一便利店前置仓生态。如果以商家的年营收计算,预计3年后将出现至少1000个年营收千万
决策参考字节跳动回应2020营收目标微信推出付费阅读功能1蚂蚁金服或先于百度等在港股上市事件近日,受到阿里巴巴在香港二次上市公司股价大涨的影响带动,包括携程百度网易在内的多家美国上市企业都被传出计划在香港上市的风声。不过有接近港股的人士原创八百里秦川望无边游陕西渭南望无边田野作者文微忍八百里秦川望无边游陕西渭南望无边田野作者文微忍编审天美五星(2020。7。24渭南)八百里秦川米粮之川,驾车游陕西渭南,畅想连篇,富足使人幸福!富足使人止步?天将降大任者,必先苦其决策参考科比的基金投过阿里囧妈上线三日播放量超6亿1科比的基金投过这28家企业阿里戴尔在列事件美国当地时间1月26日,据多家美国媒体报道称,美国加利福尼亚州卡拉巴萨斯市发生一起直升机坠毁事故,美国篮球传奇球星科比布莱恩特在该起事故有钱能买长生不老?延寿药公布用户画像最受富人欢迎据国家卫健委发布的统计数据,我国人均预期寿命已从2010年的74。83岁提高至77岁。国家统计局资料显示,到2030年我国人均预期寿命还将上升至79岁,其中上海北京人均预期寿命更是这款保护WIIN3的收纳包如何?瞬间卖出800多WIN3的收纳包,EVA硬壳做内衬,外面是牛津布包裹,内部是绒布里料,中间是用于固定的魔术锁扣,可牢牢绑住机器。侧面的渔网兜,可以放置一些配件,双尼龙拉头,可以两个方向开启,非常方日本初创公司推出飞行摩托车XTurismo近日,由三菱电机京瓷和知名足球球星本田圭佑所投资的一家日本初创公司A。L。I。Technologies推出了一款飞行摩托车XTurismo。这款飞行摩托车重约300公斤,借助传统内决策参考张一鸣宣布卸任字节跳动CEO字节收购一社交公司1一季度全国有线电视收入154亿元事件近日,国家广播电视总局公布消息消息,一季度,广播电视服务业总收入2328亿元,同比增长34。其中,广播电视广告收入573亿元,同比增长75持证决策参考字节跳动拿下网络小贷牌照芒果超媒市值超越爱奇艺1字节跳动深圳拿下网络小贷牌照注册资本4亿元事件7月15日,据新流财经报道,多位知情人士向新流财经透露,字节跳动终于在深圳拿下了一张网络小贷牌照深圳市中融小额贷款股份有限公司,注册因使用盗版织梦CMS软件,重庆哈曼丁集团官网被关停前不久,重庆哈曼丁集团的官方网站被关停,本以为是出现什么特殊情况导致站点被关,结果没想到居然是因为他们使用了盗版的织梦CMS软件。现在打开重庆哈曼丁的官网,就能看到一句关于提醒办理快手通过港交所聆讯抖音支付上线中国GDP首破100万亿1快手通过港交所聆讯2020年前三季度总收入达407亿元事件1月15日,港交所网站信息显示,快手已通过上市聆讯,正式进入上市倒计时。据聆讯后资料集显示,2020年前三季度,快手各项决策参考字节跳动将严格遵守国家相关要求微信测试群直播功能1字节跳动将严格遵守国家禁止出口限制出口技术目录相关要求事件8月30日,字节跳动发布公告称公司关注到商务部和科技部于8月28日,联合公布关于调整发布中国禁止出口限制出口技术目录的公