消息队列之自动取消已放弃的订单

本文介绍了如何利用消息队列(如Laravel的Redis队列)实现自动取消网上购物商城中超过支付有效期的订单。通过设置延迟任务,系统在订单过期后进行取消并释放库存,同时在取消前发送提醒给用户。为了确保任务执行,需要配置最大尝试次数,并注意队列任务的延迟执行时机。
摘要由CSDN通过智能技术生成

自动取消过期订单

今天我们来看另一个需要借助消息队列异步处理的业务场景 —— 自动取消已经放弃的订单。

在网上购物商城,我们需要为已经下单的实体商品订单(尤其是限量的抢购订单,或者需要依赖商家及时响应的外卖订单)设置支付有效期,以免用户下单后长时间不支付,或者根本不打算支付,而又没有手动取消,白白占用了库存额度,让其他想买的用户无法购买。

有了支付有效期后(通常是 15 分钟、半小时或者一小时),超过这个有效期,我们就认为用户放弃这个订单了,然后系统会自动取消这个订单,释放对应库存。显然,这可以通过 Laravel 消息队列提供的延迟分发功能来实现。

延迟处理任务

假设这个监控订单状态并在过期后将其取消的队列任务类是 MonitorPendingOrder,对应的订单取消操作定义在 handle 方法中:

我们可以在分发这个队列任务时通过 delay 指定延迟时间:

这样一来,该任务就会

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值