Skip to content

mchristou/topic-stream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages