Skip to main content

ruststream_fred/
lib.rs

1//! Redis / Valkey broker implementation for `RustStream`, backed by [`fred`].
2//!
3//! This crate implements the `RustStream` broker contract over Redis Streams: durable consumer
4//! groups with acknowledgement, redelivery, and crash recovery. Subjects are stream keys; a
5//! subscription reads through a consumer group, either off the fresh tail
6//! ([`RedisStream::new`]) or reclaiming another consumer's stale pending entries
7//! ([`RedisStream::reclaim`]).
8//!
9//! Settlement follows the republish-retry model: `ack` is `XACK`, `nack(requeue = true)` re-appends
10//! a copy to the same stream then acks the original, and `nack(requeue = false)` acks to drop.
11//!
12//! [`fred`]: https://docs.rs/fred
13
14#![forbid(unsafe_code)]
15
16mod broker;
17mod convert;
18mod envelope;
19mod error;
20mod list;
21mod message;
22mod publisher;
23mod pubsub;
24mod stream;
25mod subscriber;
26
27pub use broker::RedisBroker;
28pub use error::RedisError;
29pub use list::{RedisList, RedisListMessage, RedisListPublisher, RedisListSubscriber};
30pub use message::{PARTITION_KEY_HEADER, RedisMessage};
31pub use publisher::RedisPublisher;
32pub use pubsub::{
33    PubSubMode, RedisPubSub, RedisPubSubMessage, RedisPubSubPublisher, RedisPubSubSubscriber,
34};
35pub use stream::{RedisStream, StreamStart};
36pub use subscriber::RedisSubscriber;
37
38#[cfg(feature = "testing")]
39pub mod testing;