Skip to content

常见问题


使用 mq9 需要特殊 SDK 吗?

不需要。任何 NATS 客户端都可以直接使用——Go、Python、Rust、JavaScript、Java、.NET 或 NATS CLI。mq9 是在 NATS 之上定义的 subject 命名约定。RobustMQ SDK 提供类型化封装和异步模式,但完全是可选的。只要能发 NATS 请求或发布到 subject,就能使用 mq9。


发送消息时接收方不在线会怎样?

消息立即写入服务端存储。接收方订阅时——哪怕是几分钟或几小时后——所有未过期消息会按优先级顺序立即推送。先存储后推送是有保障的,与发送方和接收方是否同时在线无关。


listsubscribe 有什么区别?

listMAILBOX.LIST)返回元数据快照:msg_idpriorityts——不含消息体。用它来检视队列深度或获取特定 msg_id 以便精准删除。subscribeMAILBOX.MSG.*)投递包含消息体的完整消息,持续推送。两者互补:list 用于检视,subscribe 用于消费。


可以在创建后修改邮箱的 TTL 吗?

不可以。TTL 在创建时固定。CREATE 是幂等的——再次以相同名称调用返回成功,但不更改现有 TTL,也不重置过期时钟。要更改 TTL,必须让邮箱过期后以新值重新创建。


邮箱过期后会发生什么?

邮箱及其所有消息自动销毁,无需客户端清理。如果订阅者当前连接到该邮箱的 subject,会被静默断开。过期时不会向订阅者发送任何通知。


可以有多个 Agent 向同一邮箱写入吗?

可以。任何知道 mail_id 的 Agent 都能发布消息,没有发送方白名单或所有权限制。私有邮箱通过保密 mail_id 实现访问控制。公开邮箱则任何知道名称的 Agent 都能发布。


两次订阅同一邮箱会怎样?

每个订阅独立接收所有未过期消息,订阅之间没有去重——两者都会收到相同的消息。如果希望每条消息只投递给一个订阅者,使用队列组(NATS CLI 中的 --queue <group-name>,或客户端库中的对应参数)。


订阅者重连后优先级如何工作?

订阅时,服务端按优先级顺序推送所有存储消息:先 critical,再 urgent,最后 normal。同优先级内保持 FIFO 顺序。这意味着重连的 Agent 会先收到最关键的消息,无论原始发送顺序如何。


mq9 是 MQTT 或 Kafka 的替代品吗?

不是。mq9 专门为 AI Agent 异步通信设计。MQTT 是 IoT 遥测和设备消息的正确选择。Kafka 是高吞吐量事件流和数据管道的正确选择。mq9 解决邮箱问题:临时 Agent、离线容错投递、轻量 TTL 生命周期。三种协议可以在同一个 RobustMQ 部署上同时运行,零桥接。


消息体可以有多大?

mq9 继承 NATS 的消息大小限制。默认最大消息体为 8 MB,可在 RobustMQ 服务器配置中调整。对于大型二进制传输(模型、数据集、文件),建议将数据存储在外部,在 mq9 消息体中传递引用 URL 或对象键。


私有邮箱和公开邮箱有什么区别?

私有邮箱使用服务端生成的 UUID 作为 mail_id。由于 ID 不可猜测,只有显式获得 mail_id 的 Agent 才能发送或订阅。公开邮箱使用用户自定义的名称作为 mail_id——任何知道名称的 Agent 都能交互。点对点通信用私有邮箱;共享任务队列、服务端点和能力公告用公开邮箱。


不用 RobustMQ 能用 mq9 吗?普通 NATS 服务器可以吗?

不可以。mq9 的先存储后推送语义、优先级排序、TTL 自动清理和 PUBLIC.LIST 均在 RobustMQ 服务端内部实现。普通 NATS 服务器不支持这些功能。NATS 客户端库用作传输层,但服务端必须是 RobustMQ。


需要处理哪些错误码?

错误码含义触发时机
400请求错误缺少必填字段(如公开邮箱 CREATE 缺少 name
403禁止通配符 mail_id 订阅($mq9.AI.MAILBOX.MSG.*.*
404未找到邮箱或消息不存在
409冲突公开邮箱名称已被其他邮箱占用
410已过期邮箱 TTL 已到期

mq9 和 NATS JetStream 有什么区别?

JetStream 为 NATS 添加了流式持久化——是一个完整的类 Kafka 系统,包含命名流、持久化消费者、消息序列和重放功能。mq9 更轻量:邮箱 TTL、三级优先级、先存储后推送,没有流或消费者概念。JetStream 更适合大规模事件溯源、审计日志和基于 offset 的重放。mq9 更适合临时 Agent 间消息传递,TTL 生命周期和最小配置比 offset 追踪或流重放更重要的场景。

🎉 既然都登录了 GitHub,不如顺手给我们点个 Star 吧!⭐ 你的支持是我们最大的动力 🚀