迁移 Rust 应用 API
同时迁移导入、运行时构造和消息完成语义。修复导入可以使代码编译,却仍留下未绑定运行时的消费者或错误的运行时所有权。本文针对当前源码 API,应为所用版本选择匹配源码和依赖,不要混用不同版本的片段。
定位归属 crate
| 职责 | 当前归属 | 集成方式 |
|---|---|---|
| 客户端门面、builder、客户端配置和类型化结果 | Cargo 包 rocketmq-client-rust,Rust 导入 rocketmq_client_rust | 优先使用 crate 根公共导出,如 ClientConfig、ClientRuntime、DefaultMQProducer、DefaultLitePullConsumer。 |
| 消息、队列身份及不依赖运行时的领域类型 | rocketmq-model / rocketmq_model | 使用规范模型类型,不复制结构体,也不保留过时的 common/remoting 导入。 |
| Remoting 请求头、请求/响应码及编解码 | rocketmq-protocol / rocketmq_protocol | 仅在集成确实实现协议边界时依赖它。 |
| 连接、传输准入与 TLS 执行 | rocketmq-transport / rocketmq_transport | 业务客户端通常使用门面;直接使用传输层会增加生命周期和协议责任。 |
| 运行时所有者、服务上下文及任务所有权 | rocketmq-runtime / rocketmq_runtime | 在应用边界建立所有权并传入子上下文。 |
| 遥测所有者和句柄 | rocketmq-observability / rocketmq_observability | 保持所有者存活;克隆句柄不会成为独立的关闭所有者。 |
| 规范错误与稳定描述符 | rocketmq-error / rocketmq_error | 匹 配类型化描述符和重试提示,不解析面向人的错误字符串。 |
这是职责映射,不是对过去位于 rocketmq-common 或 rocketmq-remoting 的所有符号进行机械重命名。库开发参见模块归属。私有 base、producer、consumer 实现路径不能作为公共再导出的稳定替代。
解决导入问题时,可从当前检出生成所选包的公共 API:
cargo doc -p rocketmq-client-rust --no-deps
源码集成可参考第一条消息 manifest,其中使用一致的本地依赖,并为应用客户端设置 default-features = false。包默认值与工作区选定 feature 可能不同。只有应用使用对应 API 时才启用 admin-read 或 admin-mutation,参见 features。