解决 集群 环境 定时任务 重复执行 的问题
来源:互联网 发布:java中什么叫泛型 编辑:程序博客网 时间:2024/05/22 06:14
问题描述:
公司项目,每天凌晨1点会执行一条定时任务。该任务会找到当天生日的人,并加上积分。
起初,经过开发环境,测试环境发现都没问题能够正常执行。但是到了生产环境发现,加积分
的每个人都加了4次。
原因:
生产环境用的是集群环境,一共部署到了4台服务器上,因此同一时间点,同一个定时任务
会被重复执行4次。
解决办法:
锁。
数据库新建一张表。
CREATE TABLE `t_lock` ( `key` varchar(15) NOT NULL COMMENT '定时任务Key', `utime` bigint(20) NOT NULL COMMENT '用于乐观锁的时间', UNIQUE KEY `lockUniq` (`key`,`utime`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8;
因为我们有3个定时任务。因此,这里用一个字段key来区分是哪一个定时任务。
utime字段用于更新操作。每天凌晨1点,(4个)定时任务传入当天日期(utime初始时间是很小的一个日期),
比如传入:utime=20171027。此时执行sql语句:
update `t_lock`set `utime` = #{utime}where `key`=#{key} and `utime`<#{utime}
其他3个定时任务,操作不成功返会0。
然后,只需要根据返回值,让返回值为1的继续执行定时任务。
返回值为0的,终止定时任务即可。
阅读全文
0 0
- 解决 集群 环境 定时任务 重复执行 的问题
- 集群环境下如何防止定时任务重复执行?
- 集群环境下如何防止定时任务重复执行?
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题
- 完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题
- ofbiz中定时任务的一个重复执行的问题
- 解决Spring定时计划任务重复执行两次或多次(实例被构造两次)问题的方法
- 解决spring quartz定时任务执行2次的问题
- 解决分布式定时任务执行多次问题
- 解决Spring定时计划任务重复执行两次
- 定时任务重复执行多次
- A
- 172. Factorial Trailing Zeroes
- html,jsp表格自适应宽度
- 归并排序
- 小学英语语法口诀巧记大全,简单实用!
- 解决 集群 环境 定时任务 重复执行 的问题
- Unity5.x 灯光烘焙GI和LightingMap
- MYSQL-修改密码
- 打造自己的Ubuntu渗透利器--hydra安装
- ubuntu下出现E: Sub-process /usr/bin/dpkg returned an error code
- 今天给大家推荐两个函数
- Smart3D集群建模步骤
- fastline 安装使用
- 了解HTML语言