我先在要做这样的功能:
用户在创建订单后,订单表中记入的是未付款状态,如果用户在30分钟后,还未付款,然后就把该订单给取消。
关于用户创建订单,30分钟后还没付款,取消该订单的逻辑是怎么实现的。
我自己的想了两个方案:
(1):客户端记入这个订单,如果在30分钟后还没有付款,就发送一个请求,调用后台的接口,来取消这个订单。
(2):服务端写个脚本,然后crontab来执行,来监控在30分钟还没有付款的订单,如果有就取消订单。
各位大神,这是我想到的两个方案,不知道合不合适,求大神们指点指点,感激不尽。
不知道你的客户端是什么,但是方案1很依赖客户端,订单决策不应该由客户端发起
方案2的话就要考虑你的执行密度,要知道每时每刻都会有新订单发起的,每时每刻也会有订单过期。
用一些成熟的带TTL控制的方案吧,比如redis。
我之前的做法是在每次查询这个订单时候检查过期,被动过期。
比如,查询订单细节时,再去检查是否过期然后再处理。
当然,如果这条数据不被访问可能永远不会过期,直到有人访问它。
有点像薛定谔的猫,在你打开盒子(检查订单)之后,才知道它是否过期。所以叫被动过期