跳转至

安装

英文版本为准

本页译自英文,由模型翻译。若与英文原文存在差异,以英文原文为准。

RustStream 以单个 crate ruststream 发布,它的接口全部由可加的 cargo feature 控制。把它加进你的 Cargo.toml

[dependencies]
ruststream = { version = "0.7", features = ["macros", "memory", "json"] }
serde = { version = "1", features = ["derive"] }

serde 是你服务的直接依赖,因为消息类型要 derive Deserialize / Serialize

Edition 与 MSRV

RustStream 面向 edition 2024,最低支持的 Rust 版本是 1.88。在你的 Cargo.toml 里写上 edition = "2024"。 如果 Broker crate 的客户端库需要更新的工具链,它的下限就会高于核心。确切的下限见该 Broker crate 自己的 rust-version 字段。

Features

核心的各个 trait、RustStream 应用对象、Router、中间件和面向订阅者的消息分发始终参与编译。 其余的一切都是可加的 feature,你按需启用。

feature 引入依赖 提供什么
json (默认) serde_json JsonCodec
msgpack rmp-serde MsgpackCodec
cbor ciborium CborCodec
memory - MemoryBroker,作为参考实现的内存 Broker
macros ruststream-macros #[subscriber]#[ruststream::app],以及各个 derive(OutgoingOutSlotOutMessagesDeserializedSerializedFromRefMessageInfo
asyncapi schemars, serde_norway AsyncAPI 生成与 HTML 查看器
metrics prometheus Prometheus 中间件与导出器
logging tracing-subscriber ruststream::logging,彩色的控制台日志记录器(日志
otel opentelemetry, opentelemetry-otlp 通过 OTLP 导出链路与指标,并按 W3C 规范传递 trace-context(OpenTelemetry
testing inventory TestApp 与断言构建器(测试
conformance inventory 面向 Broker 作者的 conformance 校验套件
cli clap, anyhow ruststream 二进制程序

一个服务里可以同时启用多个编解码器(参见编解码器)。要去掉内置的 JSON 编解码器(例如在只需要 trait 和运行时的 Broker crate 里),关掉默认 feature:

[dependencies]
ruststream = { version = "0.7", default-features = false }

CLI

ruststream 二进制程序随 crate 一起发布,由 cargo feature cli 控制。它用框架的子命令(runasyncapi gen)驱动 cargo;安装方式和各个命令见 runtime::cli 模块。新项目的骨架由 cargo generate 按模板生成,参见快速上手

具体的 Broker

memory Broker 内置在 crate 里,不需要外部服务。要连接进程之外的 Broker,就依赖它的 crate: 该 crate 会从 ruststream 重新导出自己需要的东西。

每个 Broker 独立管理版本和发布,因此确切的依赖写法要看它自己的文档。那里给出当前版本,以及用于 处理器测试的 testing feature。同一份文档还描述了它的连接选项和各项能力。

可用的 Broker 列在 Broker 一节,从那里可以进到每个 Broker 的文档。 想自己写一个 Broker,参见 Broker 作者