Package org.apache.solr.servlet
Class RateLimitManager
java.lang.Object
org.apache.solr.servlet.RateLimitManager
- All Implemented Interfaces:
org.apache.solr.common.cloud.ClusterPropertiesListener
@ThreadSafe
public class RateLimitManager
extends Object
implements org.apache.solr.common.cloud.ClusterPropertiesListener
This class is responsible for managing rate limiting per request type. Rate limiters can be
registered with this class against a corresponding type. There can be only one rate limiter
associated with a request type.
The actual rate limiting and the limits should be implemented in the corresponding RequestRateLimiter implementation. RateLimitManager is responsible for the orchestration but not the specifics of how the rate limiting is being done for a specific request type.
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetRequestRateLimiter(org.apache.solr.client.solrj.SolrRequest.SolrRequestType requestType) handleRequest(jakarta.servlet.http.HttpServletRequest request) booleanvoidregisterRequestRateLimiter(RequestRateLimiter requestRateLimiter, org.apache.solr.client.solrj.SolrRequest.SolrRequestType requestType)
-
Field Details
-
ERROR_MESSAGE
- See Also:
-
DEFAULT_CONCURRENT_REQUESTS
public static final int DEFAULT_CONCURRENT_REQUESTS -
DEFAULT_SLOT_ACQUISITION_TIMEOUT_MS
public static final long DEFAULT_SLOT_ACQUISITION_TIMEOUT_MS- See Also:
-
-
Constructor Details
-
RateLimitManager
public RateLimitManager()
-
-
Method Details
-
onChange
- Specified by:
onChangein interfaceorg.apache.solr.common.cloud.ClusterPropertiesListener
-
handleRequest
public RequestRateLimiter.SlotReservation handleRequest(jakarta.servlet.http.HttpServletRequest request) throws InterruptedException - Throws:
InterruptedException
-
registerRequestRateLimiter
public void registerRequestRateLimiter(RequestRateLimiter requestRateLimiter, org.apache.solr.client.solrj.SolrRequest.SolrRequestType requestType) -
getRequestRateLimiter
public RequestRateLimiter getRequestRateLimiter(org.apache.solr.client.solrj.SolrRequest.SolrRequestType requestType)
-