Skip to content

RobustMQ NATS 概览

NATS 是什么

NATS 是一个轻量级、高性能的开源消息系统,由 Derek Collison 创建,是 CNCF 孵化项目,采用 Apache 2.0 许可。NATS 的设计哲学是极简:基于 TCP 的纯文本协议,少数几个命令,单个二进制文件部署,零外部依赖。

NATS 定位是"连接技术"(connective technology),适用于云、边缘、IoT 设备之间的通信。核心特点是低延迟(微秒级)、高吞吐(单节点可达千万级消息/秒)、极轻量(空载内存 10~20MB)。

NATS 有两层架构:

  • Core NATS:纯 pub/sub,完全不持久化,at-most-once 投递,极致性能
  • JetStream:持久化层,提供 Stream、Consumer、at-least-once / exactly-once 语义

RobustMQ 支持 NATS 的原因

在 RobustMQ 支持的所有协议中,NATS 是最适合 AI Agent 和边缘计算场景的,有几个原因:

文本协议,AI 原生友好。 NATS 是纯文本协议,PUBSUBMSG 就是几个简单的文本命令。AI Agent 可以直接生成和解析这种格式,不需要二进制编解码,甚至可以直接通过 TCP 连接与 RobustMQ 交互,零依赖。

Subject 命名空间,天然适合能力路由。 NATS 的 Subject 采用 . 分隔的层级结构,支持 *> 通配符,天然适合组织和路由 Agent 能力:

ai.agent.translation.en-to-zh    # 翻译 Agent
ai.agent.code.review              # 代码审查 Agent
ai.tool.search.web                # Web 搜索工具

Queue Group,无配置负载均衡。 多个相同能力的 Agent 加入同一个 Queue Group,NATS 自动分配请求,不需要额外的负载均衡器。

Request-Reply,天然适配 Agent 模式。 AI Agent 的核心交互是"发请求,等响应",NATS 的 Request-Reply 正好是这个语义。

边缘场景天然适配。 单二进制、零依赖、极低内存占用,NATS 是边缘设备上最合适的消息中间件。配合 mq9 的邮箱语义,可以直接在边缘实现离线消息缓存和上线后的按优先级投递。


RobustMQ 的 NATS 实现

统一存储

RobustMQ 的 NATS 实现共享统一存储层,与 MQTT、Kafka、AMQP 使用同一套存储架构。NATS 写入的消息,可以被其他协议直接消费,无需桥接或数据复制。

存储层支持三种引擎,NATS 根据场景选择:

存储引擎特性适用场景
Memory纯内存,微秒级延迟Core NATS 的实时 pub/sub
RocksDB持久化,TTL 自动清理mq9 邮箱,离线消息
File Segment大吞吐,顺序写入高吞吐日志场景

支持范围

RobustMQ 目前支持 NATS Core 的完整能力,包括:

  • Pub/Sub
  • Request/Reply
  • Queue Group(竞争消费)
  • Subject 通配符(*>
  • 消息 Header(HPUB/HMSG)
  • 连接鉴权
  • TLS

JetStream 会根据后续情况决定是否支持。JetStream 的语义(Stream、Consumer、offset 管理)与 RobustMQ 统一存储层的抽象存在重叠,需要评估整合路径和优先级。

mq9:基于 NATS 的 AI Agent 通信协议

RobustMQ 在 NATS 协议之上,定义了 $mq9.AI.* 命名空间,专为 AI Agent 异步通信设计。mq9 不是新协议,而是在 NATS Subject 上定义的语义约定,所有 NATS 客户端直接可用。

mq9 的设计参考了 JetStream 的扩展方式:不引入新的协议指令,所有操作通过标准 NATS pub/sub/req-reply 完成,服务端对 $mq9.AI.* 前缀的消息启用持久化和优先级调度。

详见 mq9 概览


与原生 NATS 的兼容性

RobustMQ 实现了完整的 NATS Core 协议,任何标准的 NATS 客户端(Go、Python、Rust、Java、JavaScript)都可以直接连接使用,无需修改代码。

bash
# 使用官方 NATS CLI 直接连接 RobustMQ
nats pub "hello.world" "test message" --server nats://localhost:4222
nats sub "hello.world" --server nats://localhost:4222

在 RobustMQ 中的定位

RobustMQ 是多协议统一消息引擎,NATS 是其中一个原生协议,与 MQTT、Kafka、AMQP 并列。

一条消息通过 MQTT 写入,可以用 NATS 消费;NATS 写入的消息,可以用 Kafka 消费。底层一份数据,协议只是读写接口,零桥接,零复制。

这在边缘场景和 AI 场景中有实际价值:IoT 设备通过 MQTT 上报数据,边缘 Agent 通过 NATS/mq9 协调任务,分析系统通过 Kafka 消费——同一个 broker,同一份存储,零运维成本。

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