订单支付超时,自动关闭订单实现

简介: 今天跟大家一起探讨一个场景:用户对商品下单,约定30分钟没支付,超时订单将被系统自动关闭。
微信公众号:冯文议(ID:fwy-world)

大家好!

今天跟大家一起探讨一个场景:用户对商品下单,约定30分钟没支付,超时订单将被系统自动关闭。

你会如何实现呢?

早期方案:扫表

定时任务,每分钟去查询数据库,查询超时没有支付的,就修改订单状态。

扫表实现

思路清晰,实现起来也比较简单,但是遇到的问题也比较多,比如:

  1. 每分钟都去查询数据库,数据库的压力比较大。
  2. 有一定的延迟。

方案升级:消息队列

用户下单成功,就发送到消息队列。时间到了,消费端拿到数据,就查询数据,判断订单状态,如果没有支付,就修改订单状态。

消息队列实现

目前落地的是采用 RabbitMQ 的延迟队列。用户创建订单成功,就加入到 MQ 的延迟队列,时间到了,就会自动消费,然后关单。

关于 RabbitMQ 延迟队列,可以看这篇文章:Spring Boot and RabbitMQ 初探 中关于【延迟队列】部分!


好了,今天的分享就到这里了。我是小冯,一名Java程序员,专注于程序设计和开发,如果你在开发上遇到问题,欢迎一起交流,微信公众号:冯文议(ID:fwy-world)。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
Java Spring 容器
如何解决spring EL注解@Value获取值为null的问题
本文探讨了在使用Spring框架时,如何避免`@Value("${xxx.xxx}")`注解导致值为null的问题。通过具体示例分析了几种常见错误场景,包括类未交给Spring管理、字段被`static`或`final`修饰以及通过`new`而非依赖注入创建对象等,提出了相应的解决方案,并强调了理解框架原理的重要性。
1099 5
|
jenkins Devops 持续交付
【devops】九、Jenkins流水线(上)
【devops】九、Jenkins流水线(上)
392 1
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
23207 2
|
消息中间件 NoSQL Kafka
订单超时取消的11种方式(非常详细清楚)
订单超时取消的11种方式(非常详细清楚)
9060 6
订单超时取消的11种方式(非常详细清楚)
|
缓存 关系型数据库 MySQL
MySQL并发支撑底层Buffer Pool机制详解
【10月更文挑战第18天】在数据库系统中,磁盘IO操作是性能瓶颈之一。为了提高数据访问速度,减少磁盘IO,MySQL引入了缓存机制。其中,Buffer Pool是InnoDB存储引擎中用于缓存磁盘上的数据页和索引页的内存区域。通过缓存频繁访问的数据和索引,Buffer Pool能够显著提高数据库的读写性能。
661 2
|
11月前
|
算法 搜索推荐
快速排序-数据结构与算法
快速排序(Quick Sort)是一种基于分治法的高效排序算法。其核心思想是通过选择基准(pivot),将数组划分为左右两部分,使得左侧元素均小于基准,右侧元素均大于基准,然后递归地对左右两部分进行排序。时间复杂度平均为 O(n log n),最坏情况下为 O(n²)(如数组已有序)。空间复杂度为 O(1),属于原地排序,但稳定性不佳。 实现步骤包括编写 `partition` 核心逻辑、递归调用的 `quickSort` 和辅助函数 `swap`。优化方法有随机化基准和三数取中法,以减少最坏情况的发生。
719 13
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】Python之人工智能应用篇——音频生成技术
音频生成是指根据所输入的数据合成对应的声音波形的过程,主要包括根据文本合成语音(text-to-speech)、进行不同语言之间的语音转换、根据视觉内容(图像或视频)进行语音描述,以及生成旋律、音乐等。它涵盖了声音结构中的音素、音节、音位、语素等基本单位的预测和组合,通过频谱逼近或波形逼近的合成策略来实现音频的生成。 音频生成技术的发展主要依赖于深度学习模型,如循环神经网络(RNN)、长短时记忆网络(LSTM)、Transformer等。这些模型通过学习大量的音频数据,能够自动生成与人类发音相似甚至超越人类水平的音频内容。近年来,随着大规模预训练模型的流行,如GPT系列模型、BERT、T5等,
689 7
【深度学习】Python之人工智能应用篇——音频生成技术
|
设计模式 运维 算法
Java设计模式-策略模式(15)
Java设计模式-策略模式(15)
366 1
|
索引 Python
%g是什么
`%g` 是 Python 字符串格式化中的一种格式说明符,用于表示浮点数或整数,能自动选择最合适的表示法。当数值为整数时,它显示整数;当数值较大或含小数时,它选择科学记数法或小数点记数法,并去掉无用的零。例如:
2071 1
|
监控 数据可视化 调度
ERP系统中的现金流管理与预测
【7月更文挑战第25天】 ERP系统中的现金流管理与预测
885 3