知识杂谈——quartz

知识杂谈——quartz

1.简要
quartz定时框架,类似的其实还有很多例如:jdk 的timer(单线程)springboot的Schedule等等
2、应用场景
定时任务在我们很多项目中都是非常常见的,这里我们举例简单说明一下:
譬如我们的银行系统,当我们有汇款任务时,并不是立刻就能汇入到相关银行中去,他是有一定标准的 ,5万元以上时,我们立刻执行,但是5万以下,我们则半小时执行一次。
还有就是我们进行数据同步时,也是隔一段时间就去执行一次数据同步。
3、quartz的核心结构
分为三部分jobDatil、trigger、schedule,任务对象、调度器、执行器三部分。
在这里插入图片描述
从此图我们能口看出我们的quartz执行任务的流程。以及获取相应对象的方式。
但是当我们任务进行的状态,默认是存储在RAMjobStore内存中。内存是不能持久化信息的。所以我们要想做到持久化就应该将其存储到数据库中。
这里我们就要用到quartz的配置文件,可以在quartz的jar包中找到,更改配置,这里我们可以参照微信jdk配置文件的方式,建立同样的包结构文件修改配置文件。
数据库表结构我们可以在quartz的官方中找到建立表结构。
4、quartz处理
我们在在spring中通常将其以bean的形式交给我们容器处理,但是不管以spring的xml形式管理,我们如果出现异常要想停止单个任务,而不像影响其他任务是不可能的。
所以这里需要注意可以采用动态的方式,即专门定义一个实体类用来记录例如cron表达式、任务包路径、任务名称等等信息的表达式。
任务的停止以及删除关闭。我们就要用到我们的schedule执行器了,它提供了关闭调度器trigger的方法puse()。重启调度器的resume()。
删除任务我们要先停止任务调度器然后delejob()。
新建任务则动态的构建调度、任务类。
5、集群
集群无外乎就是达到,防止单点故障的发生、高负载高可用,以及负载均衡的效果,因而定时任务的要想保证负载均衡,我们可以采用连接同一个数据库来使用
即通过数据库的行级锁。
注意:我们需要在配置文件中开启集群配置,以及保证同一个执行器名称
在这里插入图片描述
采用集群,就不得不说我们的丢失策略,不同的调度器有不同的策略,cron调度器默认策略为mis,当多节点执行时,如果检测到丢失任务了,可能会出现同一时间执行了多次任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值