intercom_rs/jetstream/mod.rs
1//! JetStream support with builder pattern.
2//!
3//! This module provides typed JetStream operations including:
4//!
5//! - Stream creation and management with builder pattern
6//! - Push and pull consumers
7//! - Interest-based consumers
8//! - Work queues
9//!
10//! # Example
11//!
12//! ```no_run
13//! use intercom::{Client, MsgPackCodec, jetstream::stream::StreamConfig};
14//! use serde::{Deserialize, Serialize};
15//!
16//! #[derive(Serialize, Deserialize, Debug)]
17//! struct Event {
18//! id: u64,
19//! data: String,
20//! }
21//!
22//! # async fn example() -> intercom::Result<()> {
23//! let client = Client::<MsgPackCodec>::connect("nats://localhost:4222").await?;
24//! let jetstream = client.jetstream();
25//!
26//! // Create a stream with builder pattern
27//! let stream = jetstream
28//! .stream_builder("events")
29//! .subjects(vec!["events.>".to_string()])
30//! .max_messages(1_000_000)
31//! .create()
32//! .await?;
33//!
34//! // Publish typed messages
35//! jetstream.publish::<Event>("events.user", &Event {
36//! id: 1,
37//! data: "user created".to_string(),
38//! }).await?;
39//!
40//! // Create a pull consumer
41//! let consumer = stream
42//! .pull_consumer_builder::<Event>("my-consumer")
43//! .durable()
44//! .create()
45//! .await?;
46//! # Ok(())
47//! # }
48//! ```
49
50pub mod consumer;
51pub mod context;
52pub mod queue;
53pub mod stream;