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

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

设计

核心不认识任何 Broker:Broker crate 实现核心的 trait,并持有该 Broker 的全部设置。

服务、与 Broker 无关的核心,以及实现核心 trait 的 Broker crate你的服务ruststreamBroker crate#[subscriber]处理器#[ruststream::app]构建函数运行时:路由、分发、确认、发布编解码器:JSON、CBOR、MessagePack 或不用,在编译期选定特性:内存 Broker、AsyncAPI、指标、OpenTelemetry、测试Broker, Subscriber,Publisher, sources,policies能力:批量、事务、请求与应答、定位读取ruststream-natssubject、stream、策略、设置、挂载步骤ruststream-rdkafkatopic、消费组、策略、设置、挂载步骤async-natsrdkafka
以文字阅读本图
  1. 你的服务: #[subscriber] 处理器; #[ruststream::app] 构建函数
  2. ruststream: 运行时:路由、分发、 确认、发布; 编解码器:JSON、CBOR、 MessagePack 或不用, 在编译期选定; 特性:内存 Broker、 AsyncAPI、指标、 OpenTelemetry、测试; Broker, Subscriber, Publisher, sources, policies; 能力:批量、事务、 请求与应答、 定位读取
  3. Broker crate: ruststream-nats subject、stream、 策略、设置、 挂载步骤; ruststream-rdkafka topic、消费组、 策略、设置、 挂载步骤
  4. #[subscriber] 处理器 → 运行时:路由、分发、 确认、发布: 挂载到
  5. ruststream-nats subject、stream、 策略、设置、 挂载步骤 → Broker, Subscriber, Publisher, sources, policies: 实现
  6. ruststream-rdkafka topic、消费组、 策略、设置、 挂载步骤 → 能力:批量、事务、 请求与应答、 定位读取: 实现
  7. ruststream-nats subject、stream、 策略、设置、 挂载步骤 → async-nats: 封装
  8. ruststream-rdkafka topic、消费组、 策略、设置、 挂载步骤 → rdkafka: 封装

核心不依赖任何 Broker 客户端。必需的 trait 只有三个:连接的生命周期、以 Stream 形式交付消息的订阅者,以及发布者。批量、事务、请求与应答、定位读取,以及消息本身已携带的值,都是能力 trait;只有客户端支持时,Broker 才实现它们。

Broker 的专有概念都在它自己的 crate 里:订阅形式的描述符、发布者的策略、单条消息的设置,以及读取挂载链设置的挂载步骤。核心里没有任何 Broker 专属的设置,也没有它们的默认值。

编解码器是一个类型:挂载时指定的编解码器,或由启用的特性选出的默认编解码器。没有启用任何编解码器特性时就没有默认值,需要编解码器的挂载无法通过编译。

trait 和运行时之外的一切,都是这一个 crate 的 cargo 特性:内存 Broker、AsyncAPI、指标、日志、OpenTelemetry、测试和命令行。特性只会增加功能,不会改变其他特性的行为。