后端怎样防止重复提交订单?

参考文章

通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题,

如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后台产生多条重复记录,此时我们需要考虑在后台增加防重设置。

考虑到微服务分布式的场景,可以通过使用Redisson分布式锁+自定义注解+AOP的 方式来实现后台防止重复请求的功能,

基本实现思路:

  1. 通过在需要防重的接口添加自定义防重注解,设置防重参数
  2. 通过AOP拦截请求参数,根据注解配置,生成分布式锁的Key,并设置有效时间。
  3. 每次请求访问时,都会尝试获取锁,如果获取到,则执行,如果获取不到,那么说明请求在设置的重复请求间隔内,返回请勿频繁请求提示信息。
相关推荐
Knight_AL32 分钟前
深入理解 ForkJoinPool、parallelStream、CompletableFuture:从原理到生产最佳实践(含百万订单统计实战)
java
王五周八1 小时前
玩转 Spring AI Agent:基于 SpringBoot 集成 AI 工具与 Skills 能力实践
java·spring
小锋java12341 小时前
【技术专题】LangChain4j 开发Java Agent智能体 - 会话记忆
java·人工智能
计算机安禾1 小时前
【算法分析与设计】第43篇:空间复杂度类与Savitch定理
java·服务器·网络·数据库·算法
JAVA社区1 小时前
Java高级全套教程(十四)—— SpringData超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
Java爱好狂.1 小时前
Java高并发系统架构设计核心技术开源!
java·高并发·并发编程·java面试·java面试题·java程序员·java八股文
武子康1 小时前
Java-16 深入浅出MyBatis 架构设计与源码剖析:从初始化到 SQL 执行全流程
java·后端
8Qi81 小时前
LeetCode 416:分割等和子集 —— (0-1背包)
java·算法·leetcode·动态规划·背包问题·01背包
逍遥运德2 小时前
Java编程高频的“技术点”-03:“下划线命名”参数,后端用"驼峰命名"接收
java·后端·架构