4 个版本
0.2.2 | 2023 年 10 月 15 日 |
---|---|
0.2.1 | 2023 年 10 月 15 日 |
0.2.0 | 2023 年 10 月 15 日 |
0.1.0 | 2023 年 10 月 15 日 |
#717 在 异步
16KB
224 代码行
Taps - (Tokio Async Pub/Sub)
taps
是一个基于 tokio 运行的进程内异步消息代理,允许多个客户端通过中心代理相互通信,根据主题路由消息。
功能
- 基于主题的路由:轻松根据主题发送和接收消息。
- 异步:专为异步环境构建,利用 Tokio 的功能。
- 可扩展:设计用于处理多个客户端同时通信。
快速入门
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
taps = "0.2.2"
tokio = { version = "1.33.0", features = ["full"] }
用法
use taps::{Broker, Client};
#[tokio::main]
async fn main() {
let mut broker = Broker::new();
let (worker_tx, worker_rx) = tokio::sync::mpsc::channel(32);
tokio::spawn(async move {
broker.run(worker_rx).await;
});
let mut client1 = Client::new(worker_tx.clone());
client1.subscribe("topic1".to_string()).await;
let mut client2 = Client::new(worker_tx.clone());
client2.subscribe("topic1".to_string()).await;
client1
.publish("topic1".to_string(), "Hello from client1!".to_string())
.await;
if let Some(msg_from_client2) = client2.receive("topic1").await {
println!("{msg_from_client2}"); // Outputs: "Hello from client1!"
}
}
依赖项
~2.4–8.5MB
~58K SLoC