1 unstable release
0.1.0 | Mar 16, 2025 |
---|
#10 in #broadcast
178 downloads per month
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