电子商城订单24小时自动取消如何实现?
建议开一个定时器任务,每隔一定时间间隔运行一次,查询DB的订单数据判断是否过期,然后更新订单表的某个字段。
其他的惰性方案基本都是在做订单操作的时候再进行判断,不过这个会侵入具体业务了。
定时脚本检测
将所有没有处理的订单放到一个队列中,对这个队列进行定时的遍历轮训,没有处理的自动取消。
我的想法是放入redis中,失效时间24小时,如果订单生成,写入库中,删除red is中的订单。
或者单独有张表纪录,定时扫表
- 将所有未处理的订单放入一个有序的队列中,按照先进先出,后进后出的规则排序
- 每隔相同的时间检查队列开头的那个订单,过期则取消订单,未过期则不处理
- 若有订单在24小时内被处理,则将此订单从队列中移除
是不是可以在需要用到这个订单的地方直接判断一下
24小时之前的是失效的