#pub-sub #broadcast #async

topic-stream

Multi-topic publish-subscribe system in Rust with async support

1 unstable release

0.1.0 Mar 16, 2025

#10 in #broadcast

Download history 113/week @ 2025-03-12 65/week @ 2025-03-19

178 downloads per month

MIT license

17KB
200 lines

topic-stream

topic_stream is an asynchronous, topic-based publish-subscribe library for Rust, designed to provide an efficient way to broadcast messages to multiple subscribers. It leverages async-broadcast for message passing and dashmap for concurrent topic management.

Features

  • Topic-Based Messaging: Subscribers receive messages based on topics they subscribe to.

  • Asynchronous & Non-Blocking: Uses async-broadcast for efficient message delivery.

  • Multiple Subscribers per Topic: Supports multiple receivers listening to the same topic.

  • Multi-Topic Subscription: Subscribe to multiple topics simultaneously and receive messages from all of them.

Usage

Here's a basic example of how to use topic_stream:

use topic_stream::TopicStream;

#[tokio::main]
async fn main() {
    let topic_stream = TopicStream::<String, String>::new(10);

    let topic = "news".to_string();
    let mut receiver = topic_stream.subscribe(&[topic.clone()]);

    topic_stream
        .publish(&topic, "Publish message".to_string())
        .await
        .unwrap();

    // Receive the message
    if let Some(message) = receiver.recv().await {
        println!("Received: {}", message);
    }
}

Running Tests

cargo test

License

This project is licensed under the MIT License.

Contributions

Contributions, issues, and feature requests are welcome! Feel free to submit a PR or open an issue.

Dependencies

~2–7MB
~43K SLoC