dbaplus社群

为什么越来越多团队放弃RabbitMQ,转向 NATS?

过去很多年,如果企业要做消息队列,常见选择无非几个:

  • RabbitMQ

  • Kafka

  • RocketMQ

  • ActiveMQ

其中 RabbitMQ 是非常经典的一类。

它成熟、稳定、生态丰富,很多企业的异步任务、订单消息、邮件通知、业务解耦,都是基于 RabbitMQ 搭建的。

典型架构是:

业务服务↓Exchange↓Queue↓Consumer

这套模式非常清晰。

但最近几年,越来越多云原生团队、边缘计算团队、IoT 团队、AI 平台团队,开始把目光转向另一个项目:

NATS。

那么问题来了:

RabbitMQ 真的不香了吗?

NATS 到底强在哪里?

一、RabbitMQ 为什么曾经这么成功?

RabbitMQ 最大的优势是成熟。

它基于经典的消息模型,支持 Exchange、Queue、Routing Key、Binding 等概念。

对企业来说,这套模型非常容易理解。

例如:

订单服务产生消息↓Exchange 根据规则路由↓进入不同 Queue↓消费者处理消息

这种方式非常适合:

  • 异步任务

  • 邮件通知

  • 订单处理

  • 削峰填谷

  • 业务解耦

很多中小企业只要上了 RabbitMQ,就能把原本耦合严重的系统拆开。

这也是它长期流行的原因。

Image

RabbitMQ 传统消息队列模型

二、但 RabbitMQ 也越来越重

RabbitMQ 很强。

但它并不轻。

随着业务规模增长,很多团队会遇到这些问题:

  • 集群维护复杂

  • 队列堆积排查困难

  • 高并发连接压力大

  • 镜像队列和仲裁队列理解成本高

  • 权限、插件、监控配置越来越多

尤其是在 Kubernetes 时代。

很多团队希望组件越轻越好。

但 RabbitMQ 的运维复杂度并不低。

一开始只是一个消息队列。

后来慢慢变成:

  • 集群管理

  • 插件管理

  • 权限管理

  • 监控告警

  • 队列治理

  • 消息堆积排查

对小团队来说,维护成本会越来越明显。

三、NATS 的思路完全不同

NATS 的设计理念非常简单:

  • 轻量

  • 高性能

  • 低延迟

  • 云原生

它不像 RabbitMQ 那样强调复杂路由模型。

NATS 更像一个极简、高速的消息通信层。

它适合现代分布式系统中的:

  • 服务通信

  • 事件广播

  • 请求响应

  • 任务分发

  • 边缘设备通信

NATS 不只是消息队列。

它更像一个服务之间的通信底座。

Image

NATS 云原生消息架构

四、最大优势:简单到不像消息队列

很多人第一次使用 NATS,会发现它非常轻。

启动一个 NATS Server,服务就可以开始通信。

基本模型也很简单:

  • Publish

  • Subscribe

  • Request

  • Reply

这比 RabbitMQ 的 Exchange、Queue、Binding、Routing Key 更容易上手。

对于微服务系统来说,这种简单非常重要。

因为很多场景并不需要复杂消息模型。

只是希望:

  • 服务 A 发一个事件

  • 服务 B 收到

  • 服务 C 也能订阅

NATS 正好适合这种需求。

五、JetStream 让 NATS 不再只是 Pub/Sub

早期很多人认为:

NATS 只是轻量 Pub/Sub。

不适合可靠消息。

但 JetStream 出现后,情况变了。

JetStream 给 NATS 增加了:

  • 消息持久化

  • 消息重放

  • 消费者管理

  • 流式存储

  • 工作队列

  • 至少一次投递

这意味着 NATS 不再只是临时消息通信系统。

它也可以承担很多传统消息队列场景。

例如:

  • 订单事件

  • 任务队列

  • 日志流

  • 设备消息

  • 异步处理

这也是越来越多团队重新评估 NATS 的原因。

六、Kubernetes 时代更喜欢轻量组件

过去企业部署系统,通常是几台固定服务器。

今天越来越多系统跑在 Kubernetes 上。

这意味着基础设施组件必须满足:

  • 容器化

  • 易扩展

  • 易恢复

  • 资源占用低

  • 配置简单

RabbitMQ 当然也能跑在 Kubernetes。

但从设计气质上看,NATS 更云原生。

它更轻,更容易作为基础通信层嵌入到微服务、边缘节点、IoT 设备和多集群环境中。

这也是很多云原生团队更喜欢 NATS 的原因。

七、AI Agent 时代,NATS 更有想象力

最近很多团队在做:

  • AI Agent

  • 工作流引擎

  • MCP 服务

  • 异步任务平台

  • 自动化执行系统

这些系统有一个共同特点:

任务非常多。

调用链非常长。

执行过程需要事件驱动。

例如:

用户提交任务↓Agent 拆解步骤↓调用工具↓等待结果↓继续执行↓生成报告

这种场景天然适合消息系统。

如果系统只是简单异步任务,RabbitMQ 足够。

但如果未来希望构建:

  • 事件驱动架构

  • 多 Agent 协作

  • 实时任务流

  • 分布式执行网络

NATS 的轻量、低延迟和请求响应模型,会更有优势。

Image

NATS 在 AI Agent 与事件驱动平台中的位置

八、RabbitMQ 和 NATS 怎么选?

如果你的需求是:

  • 传统异步任务

  • 复杂路由

  • 成熟管理界面

  • AMQP 生态

  • 稳定业务队列

RabbitMQ 依然非常好。

它成熟、可靠、资料多,管理界面也非常友好。

如果你的需求是:

  • 云原生微服务通信

  • 低延迟消息

  • 边缘设备通信

  • 服务间请求响应

  • 轻量事件总线

  • AI Agent 任务分发

NATS 更值得评估。

它不是简单替代 RabbitMQ,而是在现代分布式系统里提供了另一种更轻的消息通信方式。

九、我的看法

RabbitMQ 不会消失。

它依然是企业消息队列领域非常成熟的选择。

但技术趋势正在变化。

过去大家关心的是:

  • 消息能不能可靠送达

今天越来越多团队关心的是:

  • 消息系统能不能更轻、更快、更适合云原生

RabbitMQ 像一个功能完整的传统消息中间件。

NATS 更像一个现代分布式系统通信层。

如果今天我要给一个传统电商系统做异步订单处理,RabbitMQ 依然是好选择。

但如果我要设计一个云原生 AI 平台、边缘计算系统、Agent 执行网络、微服务事件总线,我一定会认真评估 NATS。

因为未来的消息系统,不只是“队列”。

而是:

连接服务、任务、事件和 Agent 的实时通信底座。

>>>>

参考地址

  • https://github.com/nats-io

作者丨acchen
来源丨公众号:AC技术与生活(ID:Public_ac)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:[email protected]
Image
Image