pub struct StreamConsumer<H: StreamHandler> { /* private fields */ }Expand description
A Redis Stream consumer that reads messages, dispatches them to a handler, and manages ACKs, retries (via XCLAIM), and dead-lettering.
The consumer uses XREADGROUP with consumer groups for reliable, at-least-once
delivery. Messages that fail processing are left pending and automatically
reclaimed after min_idle_ms via periodic XCLAIM. Messages exceeding
max_retries are moved to a dead-letter stream.
Implementations§
Source§impl<H: StreamHandler> StreamConsumer<H>
impl<H: StreamHandler> StreamConsumer<H>
Sourcepub fn new(pool: Pool, config: StreamConfig, handler: H) -> Self
pub fn new(pool: Pool, config: StreamConfig, handler: H) -> Self
Create a new stream consumer.
Sourcepub async fn run(&self, shutdown_rx: Receiver<()>) -> StreamResult<()>
pub async fn run(&self, shutdown_rx: Receiver<()>) -> StreamResult<()>
Run the consumer loop until a shutdown signal is received.
This method:
- Ensures the consumer group exists (creates it if not).
- Reads messages via XREADGROUP in a cancellation-safe inner loop.
- Processes messages outside
select!to prevent partial execution. - Periodically reclaims idle pending messages via XCLAIM.
Auto Trait Implementations§
impl<H> Freeze for StreamConsumer<H>
impl<H> !RefUnwindSafe for StreamConsumer<H>
impl<H> Send for StreamConsumer<H>
impl<H> Sync for StreamConsumer<H>
impl<H> Unpin for StreamConsumer<H>
impl<H> UnsafeUnpin for StreamConsumer<H>
impl<H> !UnwindSafe for StreamConsumer<H>
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