订单超时未支付的三种解决方案
2023年4月6日小于 1 分钟超时订单电商
用户下单之后未支付,需要实现超时自动取消订单
懒删除
不用自动更新订单状态,而是在再一次查询订单状态时发现订单超时,这时候才去更新订单状态为「已超时」
扫表轮训
较为常用的一种方案
如果对于实时性要求不高的话可以采用这种方案
通过一个定时任务,例如间隔 5 秒查询最近 30 分钟创建的订单,如果发现「未支付」的订单,则更新为「已超时」
延迟队列
像 RocketMQ 之类的消息队列都提供了延迟队列的能力,可以在用户下单的同时发送一个「用户订单超时确认」的消息,在指定时间后消费,例如 10 秒,同时消费端做好业务处理
如果系统的 MQ 版本过老,可能没有延迟消费的能力,可以自己简单实现一个延迟服务,通过时间轮的方式