strev 0.6.0

Event-driven pub/sub messaging library with compile-time ack safety
Documentation
//! Event-driven messaging for Rust.
//!
//! strev provides a uniform publish/subscribe API across multiple transports, a
//! [`Router`] that wires subscribers to handlers, composable [`Middleware`], and
//! publisher/subscriber [`decorator`]s. Messages carry their acknowledgement state in
//! the type system so each message is acked or nacked exactly once.
//!
//! Backends live in companion crates: `strev-channel`, `strev-redis`, `strev-nats`, and
//! `strev-kafka`. CloudEvents enveloping lives in `strev-cloudevents`.
pub mod decorator;
mod error;
mod handler;
mod message;
mod metadata;
pub mod middleware;
mod outcome;
mod publisher;
mod router;
mod stream;
mod subscriber;
mod topic;

pub use decorator::{
    MessageTransformPublisherDecorator, MessageTransformSubscriberDecorator, PublisherDecorator,
    SubscriberDecorator,
};
pub use error::{
    CloseError, DeserializeError, HandlerError, PublishError, RouterError, SubscribeError,
};
pub use handler::{Handler, HandlerResult, ProducedMessage, passthrough};
pub use message::{AckState, Acked, Message, Nacked, Pending};
pub use metadata::Metadata;
pub use middleware::Middleware;
pub use outcome::Outcome;
pub use publisher::Publisher;
pub use router::{HandlerBuilder, Router, RouterConfig, ShutdownSignal};
pub use stream::{MessageStream, bulk_read};
pub use subscriber::Subscriber;
pub use topic::Topic;