有时候我们可能会在java中用到定时器来清楚掉过期的数据,比如超时未支付的订单,而适用定时器会有什么弊端呢,下面是几点分析:
-
会有时间差,程序不严谨,比如清除掉一个小时未支付的订单,10:39下单,11:00检查不足1小时,12:00检查,超过1小时多余39分钟
-
不支持集群;单机没毛病,适用集群,就会有多个定时任务
解决方案:只使用一台计算机节点,单独用来运行所有的定时任务 -
会对数据库造成一定的压力
所以呢,定时任务仅只适用于小型轻量级以及传统级项目,那么大型的项目最好是适用消息队列的延迟队列来处理会比较合适,比如: rabbitmq,rocketmq等
网友评论