要在 Spring WebFlux 中实现同一个方法在短时间内只执行一次,你可以使用一种常见的技术,即通过限制并发访问来保证只有一个请求能够执行。
以下是一种可能的实现方式:
-
使用 AtomicBoolean 进行标记:在你的方法中,声明一个 AtomicBoolean 类型的变量,用于标记方法是否已经在执行中。初始时,将该变量设置为 false。
-
添加并发控制逻辑:在方法的开头,使用 compareAndSet() 方法来判断并设置标记变量的值。如果 compareAndSet() 方法返回 true,表示成功将标记变量的值从 false 设置为 true,说明当前方法可以执行;如果返回 false,表示已经有其他请求正在执行该方法,当前请求应该直接返回或执行其他逻辑。
以下是示例代码:
import java.util.concurrent.