最近国庆,公司的投资理财项目出现了问题,就是产品到期回款给客户,回了两次款。我们回款的定时任务只是在当天凌晨两点执行,以前一直是正确的。10.4号那天,突然就回了两次款,后面这几天也是正确的回款。
代码运行环境:我们线上有两台linux服务器,做了负载均衡。
查看其中一台服务器,显示定时任务就是跑了一次,但是数据库的数据实实在在的就是改了两次;另一台服务器由于外部原因,查看不了10.4号的日志了。不知道大家觉得是什原因引起的?
定时任务是用什么跑的?
quartz框架
你这描述谁知道什么原因。但有些值得思考,为什么任务没有标记已完成?已扣款的用户不再扣款
感觉不是没有标记,而是还没开始标记。
会不会是没有做客户端重复提交的校验?重复提交的是怎么校验的?
这个定时任务是后台自己跑的,没有和用户有交互。数据都时从数据库查出来的
@王的女人: 哦,是两台服务器同时跑的?
@会长:定时任务做了集群处理,虽然有两台服务器,但是定时任务只有一台服务器在跑
不管你的定时任务的代码哪里出了问题,出现重复回款,你的设计就有问题了。考虑下数据库一行数据不可以更改2次状态,这个解决方案。