主要有三个核心概念:调度器、任务和触发器。
三者关系简单来说就是,调度器负责调度各个任务,到了某个时刻或者过了一定时间,触发器触动了,特定任务便启动执行。概念相对应的类和接口有:
1)JobDetail:望文生义就是描述任务的相关情况;
2)Trigger:描述出发Job执行的时间触发规则。有SimpleTrigger和CronTrigger两个子类代表两种方式,一种是每隔多少分钟小时执行,则用SimpleTrigger;另一种是日历相关的重复时间间隔,如每天凌晨,每周星期一运行的话,通过Cron表达式便可定义出复杂的调度方案。
3)Scheduler:代表一个Quartz的独立运行容器,Trigger和JobDetail要注册到Scheduler中才会生效,也就是让调度器知道有哪些触发器和任务,才能进行按规则进行调度任务。
恢复
Quartz的故障恢复

iteye_19215
关注
0点赞·914人阅读
在默认的情况下,Quartz中所提交的任务都是独立的运行在内存中的线程,这意味着一旦机器出现故障或任何原因这个线程被干掉,那么提交的任务就无法继续也无法恢复。如果我们想要在系统出现故障的情况下恢复Quartz中的任务,就要把当前任务状态持久化,然后在系统恢复之后恢复任务的执行,这就是基本的解决思路。Quartz在这方面也提供了支持。
首先,持久化的问题。要进行恢复就要将任务进行的状态保存下来,Quartz内置了数据库持久化的模块,我们要做的只是在配置文件中增加数据源,并在数据库中手动建好表就可以了。在%Quartz_HOME%/docs/dbTables目录下有大部分数据的建表语句,可以直接拿到数据库中进行建表 *** 作。
我建议的做法是在数据库中建一些Quartz的表,MySQL的建、删表脚本,最主要的修改是quartzproperties,如果你使用的是其他数据库,可以下载Quartz的distribution,在\docs\dbTables下。然后我们可以启动Bootstrap类,注册、运行定时任务。你可以发现MySQL的表中已经有此定时任务的记录了。
然后你可以停止Bootstrap类,将Bootstrap类中关于注册、启动定时任务的代码删除或注释,然后启动Bootstrap类,看上一次 *** 作注册的定时任务会不会继续运行。
如无意外,看上一次 *** 作注册的定时任务会继续运行。
quartz是定时调用的,是否你调用一次之后你的连接就关闭了,在hibernate里面如果你要直接 *** 作session的话可以用那个线程安全的session就是hibernateTemplategetSessionFactory()getCurrentSession()connection()方法获取的,这个session会自动管理的无须手动关闭。
1、quartz表达式介绍
Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下:
(1)星号():可用在所有字段中,表示对应时间域的每一个时刻,例如,在分钟字段时,表示“每分钟”;
(2)问号():该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符;
(3)减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12;
(4)逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五;
(5)斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用/y,它等同于0/y;
2、QuartzNET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的NET移植,它用C#写成,可用于winform和aspnet应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等,比如:表示式: 0 0 12 ? 表示:每天的12点调用。
3、Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 232。
以上就是关于Spring+Quartz查询数据库动态设置cron表达式求助全部的内容,包括:Spring+Quartz查询数据库动态设置cron表达式求助、quartz定时任务执行时系统故障错过了时间点后续会自动修复吗、Java中定时任务quartz如何将历史数据写入新表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)