订单失效处理机制

本文主要讨论了订单在指定时间内未支付的失效处理机制。作者提出了两种方案:定时任务和延时线程,但认为定时任务无法实时响应,而延时线程技术要求较高。最终,作者提出了一条SQL更新语句作为个人解决方案,虽可能不适用于所有场景,尤其是秒杀业务,但在一般情况下是可行的。
摘要由CSDN通过智能技术生成

产生背景

支付订单,若指定时间内未支付,该订单失效

思考解决方案

1、定时任务

   众所周知,定时任务可以解决类似的问题,包括大批量数据,都交给定时任务来完成。

2、延时线程

   一个线程安全的阻塞队列 等可延时执行的方法

存在问题

定时任务方式明显力不从心,无法适时呈献给用户处理。而1s一次明显不合适。
延时线程,需要处理订单的时候再去唤醒线程,没有就挂起。还要持久化等等,技术要求好高啊,考虑的也要多。

  对于我这样的草根来说,普通的技术控制,严谨的业务逻辑,就可以啦。

个人思路

  参照redis的过期时间策略,通过懒删除、定时任务来实现订单过期的处理。
  redis的过期的懒删除是通过客户端对key访问的时候进行判断(比如查询get)。
  定时任务是对过期的key做处理,如果没有经过懒删除步骤,这一步可以删掉。

个人解决方案

当用户查询订单、订单列表时候,一条update语句(mysql)

update table_name set status=‘取消’ where userId = 1 and date_add(

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值