订单超时自动关单
下单 30 分钟不付款自动关单,支付回调撞车也不能误关。
用户下单后 30 分钟未支付要自动关闭订单并释放库存,你会怎么设计?如果关单消息和支付回调同时到达,怎么保证已支付订单不会被关?
考延迟任务选型、订单状态机、幂等消费、支付与关单并发竞态,以及漏消息后的补偿能力。
看业务时钟到点后,延迟队列如何触发消费者;消费者先读支付状态,再通过 CAS 推动订单状态机;补偿扫描器只处理异常漏网订单。
我开一个定时任务每分钟扫全表,找到超时订单就直接改成 CLOSED。支付了的话理论上不会扫到。