public class RateLimitingFilter
extends java.lang.Object
implements javax.servlet.Filter
The client is identified by AbstractEurekaIdentity.AUTH_NAME_HEADER_KEY HTTP header
value. The privileged group by default contains:
EurekaClientIdentity.DEFAULT_CLIENT_NAME - standard Java eureka-client. Applications using
this client automatically belong to the privileged group.
EurekaServerIdentity.DEFAULT_SERVER_NAME - connections from peer Eureka servers
(internal only, traffic replication)
EurekaServerConfig.isRateLimiterThrottleStandardClients() property.
Rate limiting is not enabled by default, but can be turned on via configuration. Even when disabled, the throttling statistics are still counted, although on a separate counter, so it is possible to measure the impact of this feature before activation.
Rate limiter implementation is based on token bucket algorithm. There are two configurable parameters:
| Constructor and Description |
|---|
RateLimitingFilter() |
| Modifier and Type | Method and Description |
|---|---|
void |
destroy() |
void |
doFilter(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
javax.servlet.FilterChain chain) |
void |
init(javax.servlet.FilterConfig filterConfig) |
public void init(javax.servlet.FilterConfig filterConfig)
throws javax.servlet.ServletException
init in interface javax.servlet.Filterjavax.servlet.ServletExceptionpublic void doFilter(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
javax.servlet.FilterChain chain)
throws java.io.IOException,
javax.servlet.ServletException
doFilter in interface javax.servlet.Filterjava.io.IOExceptionjavax.servlet.ServletExceptionpublic void destroy()
destroy in interface javax.servlet.Filter