pub struct AdmissionQueue {
pub enabled: bool,
pub max_queue_size: u32,
pub queue_timeout_ms: u64,
pub per_priority: bool,
}Expand description
Bounded admission queue config (DW-053, gateway.admission_queue).
When enabled and the concurrency cap is full, requests wait for a
permit up to queue_timeout_ms instead of being immediately shed.
The queue depth is bounded by max_queue_size; once full, further
requests are shed immediately with 503 (the queue_full outcome).
Per-priority splitting (per_priority: true, the default) reserves
a fraction of queue capacity for high-priority requests so they are
not starved by a low-priority queue fill.
Fields§
§enabled: boolMaster switch. Default false: the queue is inert and the
gateway sheds immediately on cap saturation (DW-016 behavior).
Requires max_concurrent_requests (validation rejects an
enabled queue on an uncapped gateway).
max_queue_size: u32Total number of requests that may wait for a permit across all
priority classes (1..=10000). Once the queue is at capacity,
further over-cap requests are shed immediately with 503
(the queue_full outcome).
queue_timeout_ms: u64Maximum time a request waits for a permit, in milliseconds
(1..=10000). If the timeout expires before a permit becomes
available, the request is shed with 503 (the timeout
outcome) and a Retry-After header.
per_priority: boolSplit queue capacity across priority classes (default true).
When true, a fraction of max_queue_size is reserved for
high-priority requests (priority >= 8) so they are not starved
by a low-priority queue fill. When false, the queue is a single
shared pool (first-come-first-served).
Trait Implementations§
Source§impl Clone for AdmissionQueue
impl Clone for AdmissionQueue
Source§fn clone(&self) -> AdmissionQueue
fn clone(&self) -> AdmissionQueue
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AdmissionQueue
impl Debug for AdmissionQueue
Source§impl<'de> Deserialize<'de> for AdmissionQueue
impl<'de> Deserialize<'de> for AdmissionQueue
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for AdmissionQueue
impl JsonSchema for AdmissionQueue
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for AdmissionQueue
impl PartialEq for AdmissionQueue
Source§impl Serialize for AdmissionQueue
impl Serialize for AdmissionQueue
impl StructuralPartialEq for AdmissionQueue
Auto Trait Implementations§
impl Freeze for AdmissionQueue
impl RefUnwindSafe for AdmissionQueue
impl Send for AdmissionQueue
impl Sync for AdmissionQueue
impl Unpin for AdmissionQueue
impl UnwindSafe for AdmissionQueue
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more