ruststream-nats¶
ruststream-nats 把 RustStream 服务订阅到 NATS 的
subject 上,并向这些 subject 发布消息。一个处理器绑定到 Core NATS 的 subject,或者绑定到一个
JetStream 消费者。NATS 会把回复和请求对应起来,因此服务可以发出一次请求并等待答复。JetStream 的
一次发布会说明它对流的期望,期望不成立时流就拒绝这次发布。
启用 testing feature 后,测试运行服务的生产应用:NatsBroker 在进程内运行,不需要 NATS 服务器,
也可以对着运行中的服务器。
[dependencies]
ruststream = { version = "0.7", features = ["macros", "json"] }
ruststream-nats = "0.7"
serde = { version = "1", features = ["derive"] }
[dev-dependencies]
ruststream-nats = { version = "0.7", features = ["testing"] }
服务把自己的处理器挂载在 NatsBroker 上:
crates/ruststream-nats/examples/nats_core.rs
use ruststream_nats::prelude::*;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct Order {
id: u64,
}
#[subscriber("orders.created")]
async fn handle(order: &Order) -> HandlerOutcome {
println!("got order {}", order.id);
HandlerOutcome::ack()
}
#[ruststream::app]
fn app() -> impl App {
RustStream::new(AppInfo::new("orders", "0.1.0")).with_broker(
NatsBroker::new("nats://localhost:4222"),
|b| {
b.include(handle);
},
)
}
这个 crate 提供什么¶
crate 参考就是这一切的教科书,每个主题在其中都是一节:
- 三个订阅描述符, 对应 NATS 订阅的三种形态:一个 subject、一个通配符、一个 JetStream 拉取消费者。
- 两个发布策略: 普通的 Core NATS,以及等待流确认消息的那个。
- 一次 JetStream 发布对自身声明的 去重标识和对流的期望。
- 确认与延迟重新投递: JetStream 消费者在服务器上了结一次投递,Core NATS 的 subject 则根本不了结。
- crate 填写的
AsyncAPI 文档,
以及测试:
TestApp测试套件下的生产应用,在进程内运行,或对着运行中的服务器。
接下来读什么¶
- NATS 参考 - crate 本身:描述符、策略、单条消息的设置和测试。
- RustStream 文档 - 安装、教程和 Broker 列表。
- 框架参考 - 订阅者、路由、编解码器、中间件和 CLI。
本站点与 RustStream 文档的关系¶
NATS 从这一页开始,而它由什么构成写在 crate 参考里。框架本身 和它自己的 crate 一起记录,入口页面在 RustStream 站点上。