跳到主要内容
版本:1.0.0(开发版)

仓库与模块地图

修改行为前,可以通过本地图找到对应所有者。Cargo 包、操作系统进程和产品是不同单位:一个 Broker 进程会组合多个库,而一个 Dashboard 产品可能包含独立的 Rust 和 Node 工程。

workspace 成员与发行范围

当前根 Cargo.toml 列出 28 个 workspace 成员scripts/core-release-scope.json 列出 27 个核心包。两者相差 rocketmq-dashboard-common:它属于根 workspace,但不在该核心发行包清单中。

workspace 成员关系决定 Cargo 构建图。核心发行分类表示 registry 发布、仅二进制或内部使用等打包意图。任何一个数量,都不能证明全部包已经以源码版本发布。

目录名与包名可能不同。rocketmq-client 目录中的包名是 rocketmq-client-rustcargo -p 命令使用包名。rocketmq-dashboard 目录自身不是 Cargo workspace。

按职责查看根成员

相对仓库路径职责应保留的边界
rocketmq-modelrocketmq-error领域值与规范操作错误消息身份、序列化和错误身份
rocketmq-security-api共享安全契约安全类型不隐式选择策略实现
rocketmq-protocolrocketmq-macros协议命令/codec 和类型化头部生成支持请求码、头部与序列化
rocketmq-transport客户端/服务端连接、分派、准入和文件传输有界网络工作与完成语义
rocketmq-runtime运行时所有权、任务作用域、阻塞和资源预算取消、准入与关闭证据
rocketmq-observability日志、指标、追踪及 exporter 所有权有界诊断与脱敏
rocketmq-authrocketmq-filter认证/授权实现与过滤运行时权限和支持的表达式
rocketmq-client生产者、消费者与可选 Admin facade应用持有的 ClientRuntime 与 API 兼容性
rocketmq-namesrvBroker 注册与路由查询发现状态与公布地址
rocketmq-broker消息处理器与服务组合Broker/Store 生命周期和请求结果
rocketmq-store-api与后端无关的存储契约回执、持久性、进度和 HA 决策
rocketmq-store面向 Broker 的 StoreFactory/StorePorts 组合独占生命周期所有权与窄能力接口
rocketmq-store-localrocketmq-store-rocksdbrocketmq-tieredstore本地存储原语、可选 RocksDB 元数据与分层存储集成主日志权威性与派生/次级进度
rocketmq-controllerController 元数据、OpenRaft 与 Broker 角色协调写入权、epoch 和副本成员
rocketmq-proxyrocketmq-proxy-corerocketmq-proxy-clusterrocketmq-proxy-localProxy 入口、共同契约以及远端/嵌入式适配器不同模式的后端与运行时所有权
rocketmq-tools/rocketmq-admin/rocketmq-admin-core可复用的类型化管理服务只读/变更适配器选择
rocketmq-tools/rocketmq-admin/rocketmq-admin-cli 及同父目录下的 rocketmq-admin-tui命令行与终端管理工具调用和面向操作者的错误
rocketmq-tools/rocketmq-store-inspect显式存储检查操作离线访问与数据格式范围
rocketmq-dashboard/rocketmq-dashboard-commonDashboard 共享领域模型与逻辑共享库,不是 UI 或后端可执行程序

表格将相关成员归组,不代表同组 crate 使用相同 feature 或发行分类。

库之间如何组合

这是选取关键关系的依赖图,不是完整 Cargo 图。安全和可观测性属于跨层依赖。关键区别是:协议类型不持有套接字,存储契约不选择运行时或具体数据库。

需要准确的当前依赖时,在根目录执行:

cargo metadata --no-deps --format-version 1
cargo tree -p rocketmq-client-rust -e features

feature 树描述本次命令的依赖图。可选依赖、默认值和 feature 合并可能使另一个消费者的依赖图不同。例如,根 workspace 的 Transport 依赖关闭默认 feature,而直接构建包可能启用包默认值。

独立工程

工程根目录结构起点
rocketmq-example独立 Cargo 示例工程manifest 和 example 目标
rocketmq-websiteDocusaurus Node 工程package.json 和网站写作指南
rocketmq-website/examples/first-message小型独立 Cargo 教程使用相对源码路径依赖的 manifest
rocketmq-dashboard/rocketmq-dashboard-gpui原生 Rust 桌面应用本地 manifest 与平台前置条件
rocketmq-dashboard/rocketmq-dashboard-tauriNode 前端及 src-tauri Rust 后端在前端工程根目录执行 Tauri 命令
rocketmq-dashboard/rocketmq-dashboard-web独立 frontend Node 与 backend Cargo 工程Web Dashboard 搭建指南
rocketmq-ai/rocketmq-mcp独立只读 MCP 包传输 feature 与配置
rocketmq-ai/rocketmq-mcp-control独立受控变更包独立策略与编译启用条件
rocketmq-ai/rocketmq-sre独立 Rust 2024 workspace,另有 UI 和 SDK 工程SRE workspace 与部署指南
fuzz 和宏测试 fixture专用独立测试工程各自说明与目标

不能将根目录 cargo check 解释为已检查每个独立产品。同样,前端 npm run build 不能证明 Tauri 安装包或 Web 后端已经构建。

定位改动

  • 请求码或编码头部错误,应从 Protocol 及其契约测试入手。
  • 连接超时、准入或 writer 生命周期问题,应从 Transport 及其消费者入手。
  • 任务泄漏或关闭截止时间问题,应定位实际运行时所有者,通常涉及 Runtime 和集成服务。
  • 消息已存储但查询可见性延迟,应追踪 Store 追加/分派/读取路径,不能直接归因于 NameServer。
  • UI 操作可能跨越前端、产品后端、Admin Core 和核心服务,需要检查这些具体消费者。

公开导出经过明确设计。应优先使用模块文档指定的 crate 根、apiprelude 入口,不能仅因某个实现文件存在,就导入私有模块。

继续阅读消息生命周期,了解请求路径;阅读开发指南,了解工作目录和针对性检查。

来源:workspace 成员核心发行范围ProtocolTransportStore API