问题描述
用户下单之后,在一定时间之内没有及时完成支付,订单被取消,既超时时间为30s,必须在30.1s时实现订单状态修改为未完成支付
方案一
将订单设置创建时间合结束时间,使用定时器去查询数据库中超时的订单,如果订单超时,则修改订单的状态
方案缺点:
订单修改不是很及时,会出现堆积的情况,如果大量订单连续时间类超时,会出现订单状态超时非常多也为修改订单的状态的情况,此方案仅仅适合少量订单
通过延时mq
rabbitmq实现了延时队列的功能,通过死信发送的方式可以实现订单的及时更新状态,缺点,会出现消息堆积,使得运维压力增加。该方案需要配合手动修改实现,可能出现由于系统bug没有修改订单状态的情况