pub struct ConcurrencyLimit<S, A, C = DefaultClassifier> { /* private fields */ }Expand description
Enforces an adaptive limit on the concurrent number of requests the underlying service can handle.
Unlike a static concurrency limit, ConcurrencyLimit continuously observes
request latency and adjusts the number of allowed in-flight requests using
the configured Algorithm.
Use ConcurrencyLimitLayer to integrate
with tower::ServiceBuilder.
Implementations§
Source§impl<S, A> ConcurrencyLimit<S, A>where
A: Algorithm,
impl<S, A> ConcurrencyLimit<S, A>where
A: Algorithm,
Source§impl<S, A, C> ConcurrencyLimit<S, A, C>where
A: Algorithm,
impl<S, A, C> ConcurrencyLimit<S, A, C>where
A: Algorithm,
Sourcepub fn with_classifier(inner: S, algorithm: A, classifier: C) -> Self
pub fn with_classifier(inner: S, algorithm: A, classifier: C) -> Self
Creates a new concurrency limiter with a custom Classifier.
Sourcepub fn into_inner(self) -> S
pub fn into_inner(self) -> S
Consumes self, returning the inner service.
Trait Implementations§
Source§impl<S: Debug, A, C> Debug for ConcurrencyLimit<S, A, C>
impl<S: Debug, A, C> Debug for ConcurrencyLimit<S, A, C>
Source§impl<S, A, C, Request> Service<Request> for ConcurrencyLimit<S, A, C>
impl<S, A, C, Request> Service<Request> for ConcurrencyLimit<S, A, C>
Auto Trait Implementations§
impl<S, A, C> Freeze for ConcurrencyLimit<S, A, C>
impl<S, A, C = DefaultClassifier> !RefUnwindSafe for ConcurrencyLimit<S, A, C>
impl<S, A, C> Send for ConcurrencyLimit<S, A, C>
impl<S, A, C> Sync for ConcurrencyLimit<S, A, C>
impl<S, A, C> Unpin for ConcurrencyLimit<S, A, C>
impl<S, A, C> UnsafeUnpin for ConcurrencyLimit<S, A, C>where
S: UnsafeUnpin,
C: UnsafeUnpin,
impl<S, A, C = DefaultClassifier> !UnwindSafe for ConcurrencyLimit<S, A, C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more