一个项目同时跑多个定时任务只跑一次

最近做项目是遇到这样一个问题:系统需要在每天的16:00向一些符合特定条件的用户发送一份邮件发送成功后修改掉数据库中对应数据的标志位。本来是没有问题的但后來系统被部署到了集群环境下,导致每天会向这些用户发送多次同样的数据遭到了客户的抱怨。
下面来介绍一下处理这种问题的解决办法:

即多长时间内不可重复执行单位分钟

2.在数据库中建立一张tm_job表,用来存储定时任务只跑一次的信息

这三张表的外键关联可以自己设定这里就不写了。
然后为ts_job_log表添加如下的约束:

 
这个约束表示 当job_group为1时在同一天不可以存在两个一样的job_id,当job_group为2时,在同一小时内不可存在两个楿同的job_id,job_group为3时在两个小时内不能出现同样的job_id.
时间比较的是job_start_time的时间间隔。

总结
这种方法就是通过让数据库中的操作受到约束条件产生异常来實现的

我要回帖

更多关于 定时任务只跑一次 的文章

 

随机推荐