zoukankan      html  css  js  c++  java
  • ZuulFilter 限流

    package com.example.apigeteway.filter;
    
    import com.example.apigeteway.exception.RateLimitException;
    import com.google.common.util.concurrent.RateLimiter;
    import com.netflix.zuul.ZuulFilter;
    import com.netflix.zuul.exception.ZuulException;
    import org.springframework.stereotype.Component;
    
    import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;
    import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.SERVLET_DETECTION_FILTER_ORDER;
    
    /**
     * @Title: RateLimitFilter
     * @ProjectName api-geteway
     * @date 2019/12/1712:59
     * @Desc 令牌桶 限流
     */
    @Component
    public class RateLimitFilter extends ZuulFilter {
        // 每秒放多少个令牌 (100个)
        private static final RateLimiter RATE_LIMITER = RateLimiter.create(100);
        @Override
        public String filterType() {
            return PRE_TYPE;
        }
    
        @Override
        public int filterOrder() {
            return SERVLET_DETECTION_FILTER_ORDER - 1;
        }
    
        @Override
        public boolean shouldFilter() {
            return false;
        }
    
        @Override
        public Object run() throws ZuulException {
            if (RATE_LIMITER.tryAcquire()){
                throw new RateLimitException();
            }
            return null;
        }
    }
    

      

  • 相关阅读:
    带参的方法
    类的无参方法
    类和对象
    关于线程间的通信的几个解决事例
    一个简单的邮件发送
    关于process
    关于java的static语句块
    关于struts2拦截器获取页面参数
    hexo github pages 首页不展示,出现代码怎么办
    使用Hexo搭建个人博客(三)
  • 原文地址:https://www.cnblogs.com/412013cl/p/12053972.html
Copyright © 2011-2022 走看看