Class RateLimiterBase

    • Constructor Detail

      • RateLimiterBase

        public RateLimiterBase()
    • Method Detail

      • getDefaultPolicyName

        protected abstract java.lang.String getDefaultPolicyName()
        If policy name has not been specified, the first call of getPolicyName() returns an auto-generated policy name using the default policy name as prefix and followed by auto-increase index.
        Returns:
        default policy name, as a prefix of auto-generated policy name.
      • getPolicyName

        public java.lang.String getPolicyName()
        Specified by:
        getPolicyName in interface RateLimiter
        Returns:
        name of RateLimit policy
      • setPolicyName

        public void setPolicyName​(java.lang.String name)
        Description copied from interface: RateLimiter
        Sets the policy name, otherwise an auto-generated name is used.
        Specified by:
        setPolicyName in interface RateLimiter
        Parameters:
        name - of rate limit policy
      • getDuration

        public int getDuration()
        Specified by:
        getDuration in interface RateLimiter
        Returns:
        the actual duration of a time window in seconds
      • setDuration

        public void setDuration​(int duration)
        Description copied from interface: RateLimiter
        Sets the configured duration value in seconds.
        Specified by:
        setDuration in interface RateLimiter
        Parameters:
        duration - The duration of the time window in seconds
      • getRequests

        public int getRequests()
        Specified by:
        getRequests in interface RateLimiter
        Returns:
        the maximum number of requests allowed per time window
      • setRequests

        public void setRequests​(int requests)
        Description copied from interface: RateLimiter
        Sets the configured number of requests allowed per time window.
        Specified by:
        setRequests in interface RateLimiter
        Parameters:
        requests - The number of requests per time window
      • increment

        public int increment​(java.lang.String identifier)
        Description copied from interface: RateLimiter
        Increments the number of requests by the given identifier in the current time window.
        Specified by:
        increment in interface RateLimiter
        Parameters:
        identifier - the identifier for which the number of associated requests should be incremented
        Returns:
        the new value after incrementing
      • destroy

        public void destroy()
        Description copied from interface: RateLimiter
        Cleanup no longer needed resources.
        Specified by:
        destroy in interface RateLimiter
      • newCounterInstance

        protected abstract TimeBucketCounterBase newCounterInstance​(int duration,
                                                                    java.util.concurrent.ScheduledExecutorService utilityExecutor)
        Instantiate an instance of TimeBucketCounterBase for specific time bucket size. Concrete classes determine its counter policy by returning different implementation instances.
        Parameters:
        duration - size of each time bucket in seconds
        utilityExecutor - the executor
        Returns:
        counter instance of TimeBucketCounterBase
      • setFilterConfig

        public void setFilterConfig​(FilterConfig filterConfig)
        Description copied from interface: RateLimiter
        Pass the FilterConfig to configure the filter.
        Specified by:
        setFilterConfig in interface RateLimiter
        Parameters:
        filterConfig - The FilterConfig used to configure the associated filter