Quartz任务调度踩过的坑

Quartz任务调度踩过的坑

mikasa 925 2020-01-10

背景

Quartz踩过的一次坑,于是就有了这篇文章...

当时是在某一个项目组,在做一个产品——会务系统,这就牵扯得到了业务流程,以下做简要说明:

对会议进行一系列的设置,比如是否要报名审核,排座审核,要配置如何打卡,例如现场扫码打卡、钉钉设备打卡、系统定位打卡等等。在一个就是指定具体的参会人员,还是选择部门,由部门决定具体的参会人员。还有一个就是是否多会场,多会场下比较复杂,每个会场可以设置自己会场的打卡方式等等,之后的流程就是,系统根据会议的配置,决定走什么样的流程,比如要不要审核,要不要由部门去指定参会人员等等,一系列都走完后,会在设置好的会议开始时间、打卡时间、打卡结束时间,由定时任务来去处理。

当时在调试Quartz的定时任务时,我在Job里打断点,进不进断点全靠运气,时有时无的,搞得我有点怀疑人生,由于当时接触Quartz没多久,所以很不解。

解决过程

出现这个问题时已经临近下班了,到点后该项目组的其他同事下班了,我仍然被这个问题困扰着,我不死心的一遍又一遍的触发这个任务目的是为了进断点调试,奇怪的问题出现了,这几次不会出现不能进断点的状况了(我是谁,我在哪,我在干嘛)。

当时的我对Quartz并不了解(现在也不是很了解>_<),不了解这些特性,查阅了一些资料,发现了分布式任务调度框架字样,虽然我对Quartz不了解,但我对分布式 集群这些词还是了解的,于是静心想了一会,得出了一个猜想可能是因为分布式任务调度的?,可能是由其他同事的程序执行了这个job?除此之外没法解释了,心中有了一个模糊的答案,我强烈的感觉这个猜想是正确的!

第二天早一来,打断点又出现了时有时无的情况,我单独导了一份数据库在我本地,之后再没出现这个问题,也证实了我的猜想。

结论

Quartz是分布式集群任务调度的一个框架,当多人共用一个数据库时,由于其他人也开着服务,这就相当于组成一个quartz集群,没进断点是在我同事的电脑上执行了这个job...


# quartz