Skip to main content

MemoryBackend

Struct MemoryBackend 

Source
pub struct MemoryBackend { /* private fields */ }
Expand description

An in-memory Backend. Cloning gives another handle onto the same state.

let backend = MemoryBackend::new();
let same_state = backend.clone();
assert_eq!(same_state.pending("nothing.here"), 0);

Implementations§

Source§

impl MemoryBackend

Source

pub fn new() -> MemoryBackend

Create an empty backend with no queues declared.

Source

pub fn pending(&self, queue: &str) -> usize

Number of messages waiting in queue.

Messages that were handed to a consumer but not yet settled are not counted, and neither are delayed publishes whose delay has not elapsed.

Source

pub fn acked(&self, queue: &str) -> Vec<Envelope>

Envelopes that were acked on queue, in ack order.

A successful Delivery::retry acks the original envelope, so it shows up here too (the rescheduled copy arrives separately with attempt + 1).

Source

pub fn deferred(&self, queue: &str) -> usize

Number of deferred envelopes still sitting in queue’s hold.

These are the ones Backend::defer (or Delivery::defer) accepted but whose delay has not elapsed: they are not pending yet and no consumer can see them. The count drops back to zero as each hold expires or, if the backend was closed in the meantime, as each held envelope is dropped.

Source

pub fn dead_letters(&self, queue: &str) -> Vec<(Envelope, String)>

Envelopes that were dead-lettered on queue, with the reason given.

Source

pub fn queue_names(&self) -> Vec<String>

Names of every declared (or implicitly created) queue.

Source

pub fn queue_config(&self, queue: &str) -> Option<QueueConfig>

Config recorded for queue by the first declare call, if any.

Source

pub fn is_closed(&self) -> bool

Whether Backend::close has been called.

Trait Implementations§

Source§

impl Backend for MemoryBackend

Source§

fn declare<'life0, 'life1, 'async_trait>( &'life0 self, queues: &'life1 [QueueConfig], ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, MemoryBackend: 'async_trait,

Idempotently create all queues (plus any retry / dead-letter infrastructure).
Source§

fn publish<'life0, 'life1, 'async_trait>( &'life0 self, envelope: &'life1 Envelope, delay: Option<Duration>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, MemoryBackend: 'async_trait,

Publish envelope to envelope.queue, optionally delayed.
Source§

fn defer<'life0, 'life1, 'async_trait>( &'life0 self, envelope: &'life1 Envelope, delay: Duration, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, MemoryBackend: 'async_trait,

Publish envelope into a hold that releases it onto envelope.queue after delay. This is the publish half of Delivery::defer, also used by crate::Producer::defer. Read more
Source§

fn consume<'life0, 'life1, 'async_trait>( &'life0 self, queue: &'life1 QueueConfig, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Box<dyn Delivery>, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, MemoryBackend: 'async_trait,

Start consuming queue with the given prefetch. The stream ends when the backend is closed or the connection is lost.
Source§

fn close<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, MemoryBackend: 'async_trait,

Graceful shutdown: stop all consumers, flush, close connections.
Source§

impl Clone for MemoryBackend

Source§

fn clone(&self) -> MemoryBackend

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MemoryBackend

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for MemoryBackend

Source§

fn default() -> MemoryBackend

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> CompatExt for T

Source§

fn compat(self) -> Compat<T>
where T: Sized,

Applies the Compat adapter by value. Read more
Source§

fn compat_ref(&self) -> Compat<&T>

Applies the Compat adapter by shared reference. Read more
Source§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the Compat adapter by mutable reference. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more