Quartz任务调度的概念

版权声明:本文为博主原创文章,版权归原作者小思所有,转载或者引用本文内容请注明来源及原作者 https://blog.csdn.net/zeal9s/article/details/84335603

什么是Quartz任务调度?

Quartz任务调度就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)一个job(作业)

例如:
①外卖订单下单后未付款,15分钟后自动撤消订单,并自动解锁锁定的商品…
②订购车票时,在付款时先锁定该车票,在特定时间,比如十五分钟未付款,此票会重新加入购票系统,其他旅客可以购买该票
③月底要结算该月的财务,每个月月底要生成报表,那每个月需要做任务调度,自动的去处理生成报表这一活动,无需手动。

Quartz的触发器的种类

触发器用来告诉调度程序作业什么时候触发该事件。
框架提供了5种触发器类型
SimpleTrigger、CronTirgger、DateIntervalTrigger、NthIncludedDayTrigger、Calendar

最常用的SimpleTrigger(简单触发器)和CronTrigger(表达式触发器)
SimpleTrigger:执行N次,重复N次
CronTrigger(表达式触发器):几时几分几秒,哪天/哪月/哪年,执行

Quartz的触发器的存储方式

存储方式 优点 缺点
RAMJobStore(内存作业存储类型) 不要外部数据库,配置容易,运行速度快 因为调度程序信息是存储在JVM的内存里面,所以,当应用程序停止运行时,所有调度信息将被丢失; 另外因为存储到JVM内存里面,所以可以存储多少个Job和Trigger将会受到限制
JDBCJobStore(数据库作业存储类型) 支持集群,因为所有的任务信息都会保存到数据库中,可以控制事物,还有就是如果应用服务器关闭或者重启,任务信息都不会丢失,并且可以恢复因服务器关闭或者重启而导致执行失败的任务 运行速度的快慢取决与连接数据库的快慢

Quartz中的 Job

如果是普通项目,job类则要实现Job接口,重写
public void execute(jobExecutionContext context) ;方法

jobExecutionContext 提供调度上下文各种信息,运行时数据保存在jobDataMap中

jobName+groupName=primary key它代表一个Job的唯一性,它是标识

cronExpression表达式解释

表达式:* * * * * * *
含义:[秒] [分] [小时] [日] [月] [周] [年]
常用示例:
①每天凌晨2点 0 0 2 * * ?和每天隔一小时 0 * */1 * * ?

②例1:每隔5秒执行一次:*/5 * * * * ?

③例2:每隔5分执行一次:0 */5 * * * ?

关键单词

Scheduler:调度程序,日程安排程序 
Job:作业,工作

说在最后的话:编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

猜你喜欢

转载自blog.csdn.net/zeal9s/article/details/84335603