#nats #tokio #async

nitox

Nitox 是基于 tokio 的 NATS 客户端

10 个版本

使用旧的 Rust 2015

0.1.9 2018年11月13日
0.1.8 2018年10月29日
0.1.1 2018年9月30日

#18 in #nats


3 crates 中使用

MIT/Apache

74KB
1.5K SLoC

Nitox - 基于 Tokio 的异步 NATS 客户端

Crates.io docs.rs

描述

Nitox 是基于 tokio 的 NATS 客户端。我们编写它是因为现有的库是同步的,并不符合我们的需求。

目前缺少很多功能,所以请随时贡献并帮助我们构建最好的异步 NATS 客户端!

缺少的功能

  • 找到一种方式来集成测试重连机制 - 但它已经被手动测试并且工作正常
  • 自动修剪订阅,在 X 条消息后取消订阅 - 实际上是一个错误,因为流仍然保持开启状态,尽管处于睡眠状态
  • 处理详细模式
  • 处理严格模式 - 应该可以 OOB 工作,因为我们密切遵循协议(编辑:它确实可以)
  • 将解析切换到使用 nom - 我们不确定我们能否处理非常奇怪的客户端;我们现在可以很好地与官方客户端交谈
  • 添加对 NATS Streaming 服务器支持 - 应该使用 prost 很容易,因为我们已经有了异步架构

tests/ 文件夹中有一个小的额外内容,我们的一些集成测试依赖于一个用 tokio 实现的自定义 NATS 服务器,该服务器仅实现协议的一部分以满足我们的集成测试需求。

文档

这里: http://docs.rs/nitox

安装

[dependencies]
nitox = "0.1"

用法

extern crate nitox;
extern crate futures;
use futures::{prelude::*, future};
use nitox::{NatsClient, NatsClientOptions, NatsError, commands::*};

fn connect_to_nats() -> impl Future<Item = NatsClient, Error = NatsError> {
    // Defaults as recommended per-spec, but you can customize them
    let connect_cmd = ConnectCommand::builder().build().unwrap();
    let options = NatsClientOptions::builder()
        .connect_command(connect_cmd)
        .cluster_uri("127.0.0.1:4222")
        .build()
        .unwrap();

    NatsClient::from_options(options)
        .and_then(|client| {
            // Makes the client send the CONNECT command to the server, but it's usable as-is if needed
            client.connect()
        })
        .and_then(|client| {
            // Client has sent its CONNECT command and is ready for usage
            future::ok(client)
        })
}

许可

根据以下任一许可

为什么叫 "Nitox"

代表一氧化氮,一种在神经元之间通讯中发挥重要作用的化学物质;它与 NATS 的缩写密切相关,你可以向其背后的团队询问其含义!(或者查看 gnatsd 的 git 历史记录)

什么是 NATS

NATS 服务器是一个简单的、高性能的开源消息系统,用于云原生应用程序、物联网消息和微服务架构。

更多信息请访问 NATS.io

Yellow Innovation

Yellow Innovation 是法国邮政服务 La Poste 的创新实验室。

我们通过服务创造创新的用户体验和旅程,最近重点关注物联网。

Yellow Innovation 的网站和工作

依赖项

~8–17MB
~273K SLoC