zoukankan      html  css  js  c++  java
  • 使用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("发送的重复请求被忽略");
            }
  • 相关阅读:
    链接唤醒IOSApp
    C#抽象属性
    c#结构体与类的区别
    广告学入门
    个性化推荐十大挑战[
    MapReduce 读取和操作HBase中的数据
    mysql sql命令大全
    从B 树、B+ 树、B* 树谈到R 树
    MapReduce操作HBase
    Meanshift,聚类算法
  • 原文地址:https://www.cnblogs.com/Ebird/p/7026619.html
Copyright © 2011-2022 走看看