需求是设计一个系统,某一个组件需要定期对数据进行批处理计算,比如每隔2个小时执行一次计算。应该怎么实现呢?在主程序中写个循环还是设定一个crontab任务由系统间隔性执行程序?
2 回答

慕尼黑5688855
TA贡献1848条经验 获得超2个赞
晚上考虑了一下。其实并不是说一定要用某种方式,而是要根据实际需求出发来选择最终的方案。crontab是好,但在某些场合不一定适合;主程序中添加定时任务并不一定都是坏的,有时候还真要这么选择。分离or耦合个人经验,绝大部分的定时任务都可以从主应用中分离,比如说统计数据计算、过期数据清理、数据备份、日志监控等等。但是前提是定时任务与主业务逻辑关联不大。如果定时任务和主业务耦合,比如说积分计算,计算规则比较复杂,而且可能随需求变动,若从主业务代码分离,那么规则变动的时候就需要改两份代码,好一点这部分规则做了封装,那么改动之后还要记得主业务和定时流程都要重新部署。如果不用crontab或者类crontab组件,那么也用忙等去做定时任务也是不可取的。可以使用ScheduledExecutorService管理延时任务。同意@公子的。但是用crontab的时候需要注意执行线程能够正常退出。之前就发生过因为执行线程没有退出,资源占满。如果任务执行依赖的组件比较多,在主业务中编写方便的话,也可以考虑使用定时器来作延时任务管理。
添加回答
举报
0/150
提交
取消