使用cacheBuilder实现函数防抖


在接口中出现的相同请求重复且连续发送的情况导致一些业务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("发送的重复请求被忽略");
        }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM