#tokio #消息代理 #消息传递 #异步 #发布/订阅 #主题 #路由

taps

taps (Tokio 异步发布/订阅) 是一个进程内的异步消息代理,可用于在生成的 tokio 任务之间进行消息传递

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异步

MIT 许可证

16KB
224 代码行

Taps - (Tokio Async Pub/Sub)

github crates.io docs.rs

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