pub struct RedisList { /* private fields */ }Expand description
Describes one list subscription against crate::RedisBroker.
§Examples
use std::time::Duration;
use ruststream_fred::RedisList;
let simple = RedisList::new("jobs");
let reliable = RedisList::new("jobs").reliable().block(Duration::from_secs(2));Implementations§
Source§impl RedisList
impl RedisList
Sourcepub fn new(key: impl Into<String>) -> Self
pub fn new(key: impl Into<String>) -> Self
A simple (at-most-once) BRPOP work-queue consumer on key.
Sourcepub const fn reliable(self) -> Self
pub const fn reliable(self) -> Self
Switches to reliable (at-least-once) mode: entries move to a processing list and are removed
on ack.
Sourcepub fn processing(self, key: impl Into<String>) -> Self
pub fn processing(self, key: impl Into<String>) -> Self
Sets the processing-list key used in reliable mode. Defaults to <key>.processing.
Sourcepub const fn block(self, block: Duration) -> Self
pub const fn block(self, block: Duration) -> Self
How long one blocking pop waits before looping. Defaults to 5 seconds.
Sourcepub fn codec(self, codec: impl Codec + 'static) -> Self
pub fn codec(self, codec: impl Codec + 'static) -> Self
Decodes the header/payload envelope with codec (must match the publisher). Without it the
default lossless binary framing is used.
Sourcepub fn dead_letter(self, key: impl Into<String>) -> Self
pub fn dead_letter(self, key: impl Into<String>) -> Self
In reliable mode, routes dropped and poison entries to the named dead-letter list (LPUSH)
instead of discarding them, tagged with
DEAD_LETTER_REASON_HEADER. Off by default. Has no effect
on a simple list, which cannot ack. See [crate::deadletter].
Sourcepub const fn max_deliveries(self, max: u64) -> Self
pub const fn max_deliveries(self, max: u64) -> Self
In reliable mode, caps how many times an entry may be nack(requeue = true)-ed before it is
treated as poison (dead-lettered or, with no dead-letter list, discarded). Off by default.
Lists have no native delivery counter, so this tracks the framework retry-count header carried in the entry’s envelope.
Sourcepub const fn min_idle(self, min_idle: Duration) -> Self
pub const fn min_idle(self, min_idle: Duration) -> Self
How long a claimed reliable-mode entry may sit idle on the processing list before the
recovery watchdog returns it to the main list. Required for (and only meaningful with)
recovery_zset.
It has no default and must exceed the longest legitimate handler runtime: set it too low and a healthy consumer’s in-flight entry gets recovered and processed twice.
Sourcepub fn recovery_zset(self, key: impl Into<String>) -> Self
pub fn recovery_zset(self, key: impl Into<String>) -> Self
Opts reliable mode into orphan recovery, naming the ZSET key that tracks in-flight claims.
Off by default (a dead consumer’s entry stays stranded on the processing list). The key has
no sane default, so it is named explicitly here; pair it with min_idle,
which is required when recovery is on. Reliable mode is implied. See [crate::recovery].
Sourcepub const fn recovery_ttl(self, ttl: Duration) -> Self
pub const fn recovery_ttl(self, ttl: Duration) -> Self
An optional auto-cleanup TTL on the recovery ZSET key (refreshed on every claim).
When set it must exceed min_idle (and the longest legitimate handler
runtime), or in-flight tracking is dropped before the watchdog can act.
Trait Implementations§
Source§impl SubscriptionSource<RedisBroker> for RedisList
impl SubscriptionSource<RedisBroker> for RedisList
Source§type Subscriber = RedisListSubscriber
type Subscriber = RedisListSubscriber
Source§async fn subscribe(
self,
broker: &RedisBroker,
) -> Result<Self::Subscriber, RedisError>
async fn subscribe( self, broker: &RedisBroker, ) -> Result<Self::Subscriber, RedisError>
Auto Trait Implementations§
impl !RefUnwindSafe for RedisList
impl !UnwindSafe for RedisList
impl Freeze for RedisList
impl Send for RedisList
impl Sync for RedisList
impl Unpin for RedisList
impl UnsafeUnpin for RedisList
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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