持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
使用场景
用户下单之后,一直在犹豫,迟迟没有下订单。 因此在实际情况中,其实APP的大量用户每天会下很多订单,但是不少订单可能是一直没有进行支付的,可能他下单之后犹豫了,可能是他忘了支付了!
一般订单系统都必须设置一个规则,当一个订单下单之后,超过比如30分钟没有支付,那么就必须订单系统自动关闭这个订单,后续你如果要购买这个订单里的商品,就得重新下订单了。
如果起定时任务,每30分钟扫描订单表拉取待支付的订单全量数据,然后将订单状态改为已关闭。这会对订单表造成很大的压力,因为要对同一个订单进行反复多次的扫描。
因此针对类似这种场景,MQ里的延迟消息就会发挥出它的优势了,他是特别适合在这种场景里使用的,而且在实际项目中,MQ的延迟消息 使用的往往是很多的。
用法
我们订单系统在创建了一个订单之后,可以发送一条消息到MQ里去,我们指定这条消息是延迟消息,比如要等待30分钟之后,才能被订单扫描服务给消费到。
这样当订单扫描服务在30分钟后消费到了一条消息之后,就可以针对这条消息的信息,去订单数据库里查询这个订单,看看他在创建过 后都过了30分钟了,此时他是否还是未支付状态。
如果此时订单还是未支付状态,那么就可以关闭他,否则订单如果已经支付了,就什么都不用做了。