72 个版本

0.25.0 2024年4月22日
0.24.1 2023年11月8日
0.24.0 2023年2月13日
0.23.1 2022年11月11日
0.1.1 2015年9月8日

#176 in 网络编程

Download history 13208/week @ 2024-05-02 14413/week @ 2024-05-09 15275/week @ 2024-05-16 12196/week @ 2024-05-23 14122/week @ 2024-05-30 14122/week @ 2024-06-06 12920/week @ 2024-06-13 12827/week @ 2024-06-20 10035/week @ 2024-06-27 6065/week @ 2024-07-04 9417/week @ 2024-07-11 9572/week @ 2024-07-18 10299/week @ 2024-07-25 10167/week @ 2024-08-01 11505/week @ 2024-08-08 9596/week @ 2024-08-15

43,570 每月下载量
用于 34 个 crates (28 直接)

Apache-2.0

425KB
7K SLoC

用于 RustNATS 消息系统 的客户端。

状态

License Apache 2 Crates.io Documentation Build Status

⚠️ 旧版通知

这是旧版客户端。它将不会获得新功能或更新,仅限于关键安全修复。

请使用 async nats

如果您想在同步上下文中使用异步客户端,请查看 async-nats 示例

动机

Rust 可能是 NATS 生态系统看到的最有趣的新语言之一。我们相信这个客户端将对 NATS、分布式系统和嵌入式以及 IoT 环境产生重大影响。使用 Rust,我们希望尽可能遵循语言规范并发挥语言的优势。我们将许多本来应该在运行时检查和错误的东西移动到了编译器中,最值得注意的是连接选项,以及由于迭代器在 Rust 中是第一类公民,因此订阅可以生成多种风格的迭代器。我们还希望与 NATS 的简单、安全和快速的理念保持一致!

反馈

我们鼓励 NATS 和 Rust 生态系统中的所有人帮助我们改进这个库。请打开问题,提交 PR 等。我们也在 NATS slack 上的 rust 频道!

示例使用

>cargo run--example nats-box -- -h

基本连接,以及带有选项的连接。编译器将强制这些连接正确。

fn main() -> std::io::Result<()> {
let nc = nats::connect("demo.nats.io")?;

let nc2 = nats::Options::with_user_pass("derek", "s3cr3t!")
    .with_name("My Rust NATS App")
    .connect("127.0.0.1")?;

let nc3 = nats::Options::with_credentials("path/to/my.creds")
    .connect("connect.ngs.global")?;

let nc4 = nats::Options::new()
    .add_root_certificate("my-certs.pem")
    .connect("tls://demo.nats.io:4443")?;
Ok(())
}

如果存在,它将尝试绑定到现有的消费者,否则将创建一个新的内部管理的消费者资源,该资源在订阅取消时将被销毁。

最低支持的Rust版本 (MSRV)

最低支持的Rust版本是1.58.0。

同步与异步

Rust生态系统为异步编程提供了一系列选择。此客户端库可以与任何异步运行时直接使用,例如async-std和tokio。

此库提供的异步接口仅是其同步接口的薄层封装。这两种接口风格非常相似,您可以自由选择最适合您应用程序的接口。

注意:此crate使用blocking crate中的线程池。默认情况下,它将线程数限制为500。可以通过设置环境变量BLOCKING_MAX_THREADS来覆盖此限制,范围在1到10000之间。在执行大量异步操作时请小心,因为它可能会耗尽线程池并永久阻塞,直到重新工作。

依赖项

~18–29MB
~557K SLoC