在java开发时常遇到定时的业务,大家说说自己的项目中都是怎么做的呀,不用很详细


比如要做一个5点下线的团购,但是如果不用定时器做的话,5点后没人访问,就一直是开启状态,直到第一个人去触发下架动作,这期间要写数不清的烂代码,恳请前辈点拨

java web

mituan 9 years, 7 months ago

用quartz是最靠谱的。
但是就像楼主自己说的

5点后没人访问,就一直是开启状态,直到第一个人去触发下架动作

其实这样子做也是蛮靠谱的。就是每次刷这个团购页面都需要去判断一下这个团购是否已经过期。
因为你不能完全依靠定时任务,定时任务只是在确定的时候去做一件事,但是做件事还是需要时间的。所以你最后还需要需要在团购页面渲染的时候做校验的

popshao answered 9 years, 7 months ago

描述的业务逻辑没有看明白,quartz是标配
如果在spring3.x的环境下,最简单的方式:
定时任务的类添加@Component注解,执行任务的方法添加@Scheduled(cron = "0/5 * * * * ?")注解。
让Spring扫描到该类:spring配置文件中加 <task:annotation-driven /> 这个配置,
其中@Scheduled注解是(org.springframework.s...

24hours answered 9 years, 7 months ago

必需quartz

solof answered 9 years, 7 months ago

两个方法:
1. 用crontab指定5点开始执行下架任务。
2. 跑一个服务不断轮询时间,查询到时间要下架的商品,并执行下架任务。

言灵灬永恒 answered 9 years, 7 months ago

quartz到点定时触发,
或者采用Lazy模式,等一个前端用户触发了这个团购,业务逻辑中检查是否已经过期了,不好的地方在于业务耦合度高了

khxooo answered 9 years, 7 months ago

quartz

gjma01 answered 9 years, 7 months ago

Your Answer