动态设置超时时间+定时任务解决超时订单“延迟”问题

在订单超时的时候,删除订单或者更新订单状态上有多种解决方案,比如延迟消息Rabbit的 TTL + 死信 Exchange,定时任务等等。

而使用延迟消息会有峰值问题,同一时间大量过期,会造成系统压力过大,导致消息分发延迟,影响定时精度,所以使用定时任务做批处理,每次捞出一批订单做操作。

但定时任务的定时性,就导致了他会存在“延迟”,比如说一个用户 32分 31 秒下的订单 假设订单十分钟超时,定时任务设置为一分钟执行一次,那么导致这个订单在43分00秒才会被更新,这样就延迟了29秒才关闭订单,其实从本质上讲并没有什么损失,反而延长了用户的支付时间。

但在处理上就会有个不确定的“延迟”存在,所以针对这种情况,可以考虑使用动态超时时间的方法,将用户的下订单时间如果不是整数的分钟,我设置他的订单超时时间不同,比如32分10秒下的订单,可以设置他10分50秒的超时时间,使超时时间加上用户下单的时间正好为整数 的分钟数,然后定时任务依旧设置为一分钟执行一次或者其他时长,这样就可以在很大程度上减少“延迟”,因为定时任务的执行完成时间并不能精确衡量,但也能很大程度上解决了这个不确定延迟的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值