微信公众号:冯文议(ID:fwy-world)
大家好!
明天跟大家一起探讨一个场景:用户对商品下单,约定 30 分钟没领取,超时订单将被零碎主动敞开。
你会如何实现呢?
晚期计划:扫表
定时工作,每分钟去查询数据库,查问超时没有领取的,就批改订单状态。
思路清晰,实现起来也比较简单,然而遇到的问题也比拟多,比方:
- 每分钟都去查询数据库,数据库的压力比拟大。
- 有肯定的提早。
计划降级:音讯队列
用户下单胜利,就发送到音讯队列。工夫到了,生产端拿到数据,就查问数据,判断订单状态,如果没有领取,就批改订单状态。
目前落地的是采纳 RabbitMQ 的提早队列。用户创立订单胜利,就退出到 MQ 的提早队列,工夫到了,就会主动生产,而后关单。
对于 RabbitMQ 提早队列,能够看这篇文章:Spring Boot and RabbitMQ 初探 中对于【提早队列】局部!
好了,明天的分享就到这里了。我是小冯,一名 Java 程序员,专一于程序设计和开发,如果你在开发上遇到问题,欢送一起交换,微信公众号:冯文议(ID:fwy-world)。