记一次quartz定时任务不执行排雷

过程

项目中需求统计数据,涉及大屏展示,展示的数据很复杂,所以采取了晚上把数据汇总出来存到redis缓存,供白天查询的方式。

用到了quartz定时任务,写好sql、逻辑等测试没问题,就愉快的部署到了生产。

可一段时间观察下来发现定时任务有时候执行,有时候不执行。

排查了多次也没发现问题出在哪,也没有错误日志输出,代码里明明打了日志。

索性下决心开始刨quartz的逻辑,发现有个记录错误的表,记录了一些错误信息。

看表里的错误迹象是找不到定时任务的bean,奇了怪了 ,测试明明没问题的。。。。。。

after a long time。。。。。。

无意间在服务器上执行ps -ef|grep xxx 命令时发现一个应用,名字和我这个项目非常类似,只是端口不一样。想起来是以前部署的一版测试程序。好了,我感觉定时任务不执行的案子要破了。。。

原因

quartz定时任务是读取表里的配置信息去触发执行,若是分布式,有一个服务执行了则其他服务不会重复执行。如数据库里存12点执行任务A,两个程序都读到了这条数据,都去执行任务bean,可想而知,若那版测试程序抢了先去执行,代码里并没有任务bean,所以就报错找不到bean了。然后另一个程序也不会去执行了。

 不小心弄了个瘸腿的分布式。。。。。。

解决

是个非常低级的错误,服务器中启了两个应用,停掉一个就好了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值