订单超时自动取消是电商平台中常见的功能之一,例如在淘宝、京东、拼多多等商城下单后,如果在一定的时间内没有付款,那么订单会自动被取消,是怎么做到的呢?作为技术人员我们应该了解自动取消的原理和实现逻辑,本文将介绍几种常用的技术方案,帮助开发者实现订单超时自动取消的功能。 通过以上图我们可以看到其实超时自动取消的方案有很多,虽然方案多(大多数都是结合延迟队列来实现的),但每个方案都有自己的优缺点,具体场景需要选用合适的方案。 本文我们主要讲解以下几种常用取消方案,其他方案可自行搜索研究。 方案1:定时轮询(quartz实现) 方案2:JDK延迟队列DelayQueue 方案3:时间轮算法(netty的HashedWheelTimer) 方案4:Redis 方案5:RabbitMQ消息队列 方案描述 通过定时任务的方式去轮询扫描数据库表,根据订单有效期来判断订单是否到期,到期则更新订单状态。 这里我们使用quartz作业调度框架来实现定时轮询。 代码 需要添加maven依赖 <dependency> <groupId>org.quartz-scheduler</groupId>...