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 deadletter;
19mod delay;
20mod envelope;
21mod error;
22mod list;
23mod message;
24mod publisher;
25mod pubsub;
26mod recovery;
27mod stream;
28mod subscriber;
29
30pub use broker::RedisBroker;
31pub use deadletter::{DEAD_LETTER_REASON_HEADER, DELIVERY_COUNT_HEADER, IDLE_MS_HEADER};
32pub use delay::DelayedRetry;
33pub use error::RedisError;
34pub use list::{RedisList, RedisListMessage, RedisListPublisher, RedisListSubscriber};
35pub use message::{PARTITION_KEY_HEADER, RedisMessage};
36pub use publisher::RedisPublisher;
37pub use pubsub::{
38    PubSubMode, RedisPubSub, RedisPubSubMessage, RedisPubSubPublisher, RedisPubSubSubscriber,
39};
40pub use stream::{RedisStream, StreamStart};
41pub use subscriber::RedisSubscriber;
42
43// fred auth/TLS types re-exported for the `RedisBroker::tls` / `::credential_provider` builders, so
44// callers need not depend on `fred` directly to name them.
45#[cfg(feature = "credential-provider")]
46pub use fred::types::config::CredentialProvider;
47#[cfg(any(
48    feature = "tls-rustls",
49    feature = "tls-rustls-ring",
50    feature = "tls-native-tls"
51))]
52pub use fred::types::config::{TlsConfig, TlsConnector};
53
54#[cfg(feature = "testing")]
55pub mod testing;