#nats #type #protocols #nats-client #api-bindings

nats-types

用于表示 NATS 协议消息的枚举和类型

4 个版本

0.1.8 2019年4月28日
0.1.7 2019年4月17日
0.1.1 2018年11月18日
0.1.0 2018年6月24日

#2177 in 编码

36 每月下载量
用于 natsclient

Apache-2.0

37KB
925

Build Status

nats-types

nats-types 包包含一个枚举 ProtocolMessage。该枚举可以用来解析 NATS 服务器输出的字符串,以及生成要发送给 NATS 服务器字符串。这个枚举与 NATS 2.0 协议消息保持更新。

此包的主要用途是支持构建 NATS 客户端,尽管可能有其他可能的用途。

要生成一个协议消息,只需创建枚举

extern crate nats_types;

use nats_types::{PublishMessage, ProtocolMessage};

let publish = ProtocolMessage::Publish( PublishMessage::new(
    Some("INBOX.42".to_string()),
    "workdispatch".to_string(),     
    b"Hello World".to_vec(),
});

let out = format!("{}", publish);
assert_eq!(out, "PUB workdispatch INBOX.42 11\r\nHello World\r\n");

相同的消息可以从从 NATS 服务器收到的两行消息中构建

extern crate nats_types;

use std::str::FromStr;
use nats_types::{ProtocolMessage};

let msg = "PUB FOO 11\r\nHello NATS!\r\n";
let protomsg = ProtocolMessage::from_str(&msg).unwrap();
if let ProtocolMessage::Publish(pubm) = protomsg {
    assert_eq!(pubm.payload_size, 11);
    assert_eq!(pubm.subject, "FOO");
    assert_eq!(pubm.reply_to, None);
    assert_eq!(pubm.payload, b"Hello NATS!");
}

依赖关系

~1.5–2.4MB
~50K SLoC