跳到主要内容
英文版本为准

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

安装

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.95。在你的 Cargo.toml 里写上 edition = "2024"。 如果 Broker crate 的客户端库需要更新的工具链,它的下限就会高于核心。确切的下限见该 Broker crate 自己的 rust-version 字段。

Features​

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

feature引入依赖提供什么
json (默认)serde_jsonJsonCodec
msgpackrmp-serdeMsgpackCodec
cborciboriumCborCodec
memory-MemoryBroker,作为参考实现的内存 Broker
macrosruststream-macros#[subscriber]、#[ruststream::app],以及各个 derive(Outgoing、OutSlot、OutMessages、Deserialized、Serialized、FromRef、MessageInfo)
asyncapischemars, serde_norwayAsyncAPI 生成与 HTML 查看器
metricsprometheusPrometheus 中间件与导出器
loggingtracing-subscriberruststream::logging,彩色的控制台日志记录器(日志)
otelopentelemetry, opentelemetry-otlp通过 OTLP 导出链路与指标,并按 W3C 规范传递 trace-context(OpenTelemetry)
testinginventoryTestApp 与断言构建器(测试)
conformanceinventory面向 Broker 作者的 conformance 校验套件
cliclap, anyhowruststream 二进制程序

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

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

CLI​

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

具体的 Broker​

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

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

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