Skip to main content

rskit_messaging/
lib.rs

1//! # rskit-messaging
2//!
3//! Message broker abstractions with an in-memory implementation for testing.
4//! Broker SDKs live in opt-in adapter crates such as `rskit-messaging-kafka`.
5//!
6//! ## Quick start
7//!
8//! ```rust
9//! use rskit_messaging::memory::InMemoryBroker;
10//! use rskit_messaging::{Message, MessageProducer, MessageConsumer};
11//!
12//! # #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> {
13//! let broker = InMemoryBroker::<String>::new(64);
14//! let producer = broker.producer();
15//! let consumer = broker.consumer();
16//!
17//! consumer.subscribe(&["events"]).await?;
18//! producer.send(Message::new("events", "hello".into())).await?;
19//!
20//! let msg = consumer.recv().await?;
21//! assert_eq!(msg.payload, "hello");
22//! # Ok(())
23//! # }
24//! ```
25
26pub mod batch;
27pub mod bridge;
28/// Broker configuration types and policy enums.
29pub mod config;
30pub mod errors;
31pub mod event;
32pub mod event_publisher;
33pub mod handler;
34pub mod managed_consumer;
35pub mod managed_producer;
36pub mod memory;
37/// Message envelope and metadata types.
38pub mod message;
39pub mod metrics;
40pub mod middleware;
41pub mod registry;
42pub mod router;
43pub mod runner;
44/// Core producer, consumer, and broker traits.
45pub mod traits;
46pub mod translator;
47
48pub use batch::{BatchConfig, BatchProducer};
49pub use config::{
50    BrokerConfig, BrokerConfigExt, BrokerConfigOverrides, CommitStrategy, DeliveryGuarantee,
51    DlqPolicy,
52};
53pub use errors::{ErrorClassifier, NoopErrorClassifier};
54pub use event::Event;
55pub use event_publisher::EventPublisher;
56pub use handler::{FnHandler, HandlerMiddleware, MessageHandler, chain_handlers, middleware_fn};
57pub use managed_consumer::{ManagedConsumer, ManagedConsumerBuilder};
58pub use managed_producer::{ManagedProducer, ManagedProducerBuilder};
59pub use memory::{
60    InMemoryBroker, InMemoryConsumer, InMemoryProducer, assert_no_messages, assert_published,
61    assert_published_n, wait_for_message,
62};
63pub use message::Message;
64pub use metrics::{MetricsCollector, NoopMetrics};
65pub use middleware::StackBuilder;
66pub use registry::{MessagingBackend, MessagingFactory, MessagingRegistry};
67pub use router::MessageRouter;
68pub use runner::ConsumerRunner;
69pub use traits::{BrokerComponent, EventConsumer, EventProducer, MessageConsumer, MessageProducer};
70pub use translator::{JsonStringTranslator, JsonTranslator, MessageTranslator};