8 个版本 (4 个重大更改)

0.4.0 2023 年 7 月 3 日
0.3.2 2022 年 6 月 28 日
0.3.0 2021 年 2 月 3 日
0.2.1 2020 年 5 月 15 日
0.0.2 2018 年 10 月 30 日

#161异步

Download history 1911/week @ 2024-03-14 2187/week @ 2024-03-21 2186/week @ 2024-03-28 2469/week @ 2024-04-04 2276/week @ 2024-04-11 1849/week @ 2024-04-18 2392/week @ 2024-04-25 1809/week @ 2024-05-02 1917/week @ 2024-05-09 1949/week @ 2024-05-16 1968/week @ 2024-05-23 2552/week @ 2024-05-30 1977/week @ 2024-06-06 2697/week @ 2024-06-13 2391/week @ 2024-06-20 1922/week @ 2024-06-27

9,379 每月下载量
2 crates 中使用

MIT/Apache

47KB
978 代码行

TMQ - 为 Tokio 提供的 Rust ZeroMQ 绑定

此包将 Tokio 和 ZeroMQ 连接起来,以便在异步世界中使用 ZeroMQ。

Crates.io Docs.rs MIT licensed

变更日志

0.3.1 - Multipart 迭代 Mut

Multipart 添加了 iter_mut() 方法

0.3.0 - 支持 Tokio 1.0

0.3.0 添加了对 tokio 1.0 的支持,感谢 YushiOMOTE

已实现套接字

  • 请求/回复
  • 发布/订阅
  • 经销商/路由器
  • 推送/拉取

示例

请参阅 examples 目录中的完整示例。它们根据套接字类型成对出现。

用法

用法简单,但具有明确的观点。请参阅示例中的有效代码,但通常您需要导入 tokiotmq::*

发布

要向所有连接的订阅者发布消息,可以使用 publish 函数

use tmq::{publish, Context, Result};

use futures::SinkExt;
use log::info;
use std::env;
use std::time::Duration;
use tokio::time::delay_for;

#[tokio::main]
async fn main() -> Result<()> {

    let mut socket = publish(&Context::new()).bind("tcp://127.0.0.1:7899")?;

    let mut i = 0;

    loop {
        i += 1;

        socket
            .send(vec!["topic", &format!("Broadcast #{}", i)])
            .await?;

        delay_for(Duration::from_secs(1)).await;
    }
}

订阅

订阅套接字是从发布套接字读取值的 Stream。您可以使用 subscribe 方法指定过滤器前缀,使用 "" 用于所有消息。

use futures::StreamExt;

use tmq::{subscribe, Context, Result};

use std::env;

#[tokio::main]
async fn main() -> Result<()> {

    let mut socket = subscribe(&Context::new())
        .connect("tcp://127.0.0.1:7899")?
        .subscribe(b"topic")?;

    while let Some(msg) = socket.next().await {
        println!(
            "Subscribe: {:?}",
            msg?.iter()
                .map(|item| item.as_str().unwrap_or("invalid text"))
                .collect::<Vec<&str>>()
        );
    }
    Ok(())
}

依赖项

~3–14MB
~154K SLoC