Skip to main content

LapinSubscriber

Struct LapinSubscriber 

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

A consumer on one queue, yielding LapinMessage deliveries.

Created by subscribing a RabbitQueue descriptor (or a bare queue name) through LapinBroker. The subscriber owns a dedicated channel; dropping it closes that channel and the broker redelivers whatever was unacknowledged.

Back-pressure: the broker stops pushing once prefetch unacknowledged deliveries are in flight, so consuming slower slows the producer side down instead of buffering without bound.

It is a BatchSubscriber as well as a Subscriber: AMQP has no wire batch, so a batch handler’s size is honoured by collecting the deliveries here (see the impl).

Implementations§

Source§

impl LapinSubscriber

Source

pub fn queue(&self) -> &str

The queue this subscriber consumes from.

Trait Implementations§

Source§

impl BatchSubscriber for LapinSubscriber

Batches are assembled on the client: AMQP delivers one basic.deliver at a time, so there is no wire batch to ask the broker for, and a batch closes on the registration’s size or on the descriptor’s batch_wait, whichever comes first.

A batch can only hold what the broker has already pushed, so a subscription whose prefetch window is narrower than the registration’s batch size yields batches capped by the window rather than by the size.

Source§

fn batches( &mut self, size: NonZeroUsize, ) -> impl Stream<Item = Result<Self::Batch, <Self as Subscriber>::Error>> + Send + '_

§Cancel safety

As cancel safe as stream between polls; dropping the returned stream abandons the batch being assembled, and the broker redelivers those deliveries when the channel closes.

Source§

type Batch = Vec<LapinMessage>

Container yielded by batches. Implementations choose between Vec, custom iterators, or anything else that yields the underlying Subscriber::Message.
Source§

impl Debug for LapinSubscriber

Source§

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

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

impl Subscriber for LapinSubscriber

Source§

fn stream( &mut self, ) -> impl Stream<Item = Result<Self::Message, Self::Error>> + Send + '_

Streams deliveries as they arrive; the stream ends when the consumer is cancelled or the connection closes.

§Cancel safety

Polling is cancel safe (no delivery is lost by dropping the stream between polls), and the stream can be re-created by calling stream again: deliveries buffer in the consumer, not in the returned stream.

Source§

type Message = LapinMessage

The message type yielded by this subscriber.
Source§

type Error = AmqpError

The error type yielded by the stream when delivery fails.

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PublishedThrough<DefaultSlot> for T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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