在接口中出现的相同请求重复且连续发送的情况导致一些业务BUG,需要在接口上实现防抖
使用google的cacheBuilder
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
定义一个静态缓存对象,key值根据我们业务请求报文定义
//初始化缓存 orgkey,设置5秒过期 public static final Cache<String, Boolean> cahceBuilder = CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.SECONDS).build();
//获取请求报文的唯一键,或者使用报文中的某些能请求重复的属性拼装 final String key=JSON.toJSONString(request) //封装对象,用于判断是否命中缓存 final AtomicBoolean flag=new AtomicBoolean(false); //从缓存中获取该键,如果没有找到,则执行业务方法 cahceBuilder.get(key, new Callable<Boolean>() { @Override public Boolean call() throws Exception { flag.set(true); //未命中,则执行业务方法 return true; } }); if(flag.get()){ logger.warn("发送的重复请求被忽略"); }