跳转至

消息持久化与客户端契约索引

状态:实现前接口冻结。本文档中的 Rust 为伪签名:只表达稳定边界、数据和结果,绝不包含实现体、存储布局或消息中间件配置。

使用规则

  • 所有跨模块数据、错误枚举和结果类型只在 shared.md 定义;模块契约不得复制定义。
  • 实现可增加私有辅助类型,但不得改变这里的前置条件、后置条件或错误语义。
  • SEND_ACK 只能由 CommittedMessage 映射;在线 Push 是优化,不能作为持久化完成的依据。
  • 后端实现仅实现 MessageStore / MailboxStore 契约;key、CQL、事务脚本、日志主题和消费者位点均为内部细节。

架构模块映射

架构子模块 契约
MessageStore、MessageCommitter / CommitRecovery message_commit.md
CommitLog、FanoutCoordinator commit_log_fanout.md
MailboxMaterializer、MailboxStore mailbox.md
Redis / ScyllaDB 共同语义 storage_backends.md
GroupMembership 与管理面 group_membership.md
ClientRuntime / LocalStore client_runtime.md
GUI、CLI、C FFI、UniFFI 宿主 client_host.md
分支同步与发布门禁 branch_release.md

依赖方向

MessageCommitter -> MessageStore + CommitLog
CommitLog -> FanoutCoordinator -> GroupMembership
MailboxMaterializer -> MailboxStore + MessageStore
ClientRuntime -> LocalStore + ClientHost transport

MailboxMaterializer 只接受分发日志记录;FanoutCoordinator 不得写用户邮箱或 Socket;宿主不得复制 ClientRuntime 的同步与去重状态机。