⚖️ 丁丁选型对比系列 · 第3篇

MQTT 消息服务器怎么选?EMQX vs Mosquitto vs HiveMQ

💡 设备上云用什么 MQTT 服务器?百万级设备连接选哪个?免费开源 MQTT Broker 到底怎么挑?

这三个是工业物联网最主流的 MQTT Broker:EMQX(国产,分布式,亿级连接)、Eclipse Mosquitto(C 写,极轻量,嵌入式首选)、HiveMQ(德国,企业级高可用)。这篇用 10 个维度说清楚,你的项目该上哪个。

对比对象3 款 MQTT Broker
对比维度10 项
丁丁实战EMQX 24 个月
建议大平台EMQX,小中转Mosquitto
🎯 丁丁一句话结论

大规模设备接入、要规则引擎和数据集成、做国产云原生——选 EMQX(国产,单集群亿级连接);几十台设备简单中转、跑在边缘网关或树莓派等资源受限环境——选 Mosquitto(C 写,极轻量);企业级高可用集群、严格遵循 MQTT 5.0、要德国厂商商业支持——选 HiveMQ。国内工业项目,EMQX 是默认首选。

01 MQTT Broker 在架构里站在哪

很多人刚上手时会问:设备直接连数据库不就行了,为什么中间还要一个 MQTT 服务器?因为工业现场的设备连接是"多变的":

  • 设备不直连数据库:成百上千台设备如果各自直连 TDengine/MySQL,数据库连接数会被打爆,也无法鉴权和管理。
  • Broker 做解耦:设备只管把消息发给 Broker,谁要数据谁订阅,设备和应用互相不认识。
  • 弱网与缓存:现场网络不稳时,Broker 承担缓存、重传、遗嘱消息,应用不用关心连接细节。
  • 统一出口:一个 MQTT 中枢,后面接时序库、看板、报警、MES,都从它订阅。

典型链路就是:设备 → 采集网关(Neuron/ThingsGateway)→ MQTT Broker(这里三选一) → TDengine/Grafana。

02 10 个维度逐项对比

对比维度 EMQX Mosquitto HiveMQ
厂商 / 出身 EMQ 映云科技(杭州,国产) Eclipse 基金会(开源社区) HiveMQ GmbH(德国)
授权方式 开源版免费,企业版订阅 EPL/EDL,完全免费 社区版免费,企业版商业授权
开发语言 Erlang(天生分布式) C(极轻量) Java
集群能力 分布式集群,单集群亿级连接 以单机为主,集群能力弱 企业级集群,高可用成熟
资源占用 中等,功能全 极低,嵌入式/树莓派能跑 中高,JVM 开销
MQTT 5.0 完整支持 支持 完整支持,标准遵循最好
内置集成 规则引擎 + 20+ 数据集成,最强 以转发为主,需外接 企业级桥接与集成
国产 / 信创 是(国产) 中立(Eclipse 社区) 否(德国商业)
管理控制台 内置强大 Dashboard / 规则/监控 偏配置文件,界面简单 企业级控制台
典型规模 海量设备云平台 边缘/小项目/嵌入式 企业级高可用、大规模 IoT
📌 怎么读这张表:
  • 比"大规模、规则引擎、云原生、国产"→ EMQX 胜出;
  • 比"轻、省资源、简单、嵌入式"→ Mosquitto 胜出;
  • 比"企业级高可用、MQTT 5.0 严谨、商业 SLA"→ HiveMQ 胜出。

03 三种典型场景,直接对号入座

☁️
选 EMQX,如果你:
  • 大规模设备接入(成百上千上万台)
  • 要规则引擎和数据集成(直接写库/转发)
  • 做国产替代 / 信创项目
  • Docker/K8s 云原生部署
  • 要中文社区和官方技术支持
🔌
选 Mosquitto,如果你:
  • 几十台设备的简单 MQTT 中转
  • 跑在边缘网关/树莓派等资源受限机器
  • 嵌入式设备本地 Broker
  • 只要稳定轻量,不需要花哨功能
  • 追求最省内存、最简单部署
🏢
选 HiveMQ,如果你:
  • 企业级高可用集群要求
  • 严格遵循 MQTT 5.0 标准
  • 已有欧洲/德国厂商技术栈
  • 要成熟商业 SLA 和企业控制台
  • 大规模工业 IoT 平台

04 丁丁的实战建议

我自己的项目里,中心层几乎都用 EMQX——国产、中文文档、规则引擎能直接把消息写进 TDengine,省掉再搭一个转发服务;边缘网关本地如果只是几台设备做中转,就用 Mosquitto,省资源。

真正要避免的坑:小项目硬上重型 Broker(多占内存、多一套运维),或者大项目用 Mosquitto 单机硬扛(连接数上来就顶不住)。先估设备规模和是否要集群,再选。

和采集层一样,这三者也不是互斥:边缘 Mosquitto/MQTT → 中心 EMQX 集群,是常见的云边组合。

常见问题 FAQ(选型时最常被问)

Q:MQTT 消息服务器(Broker)到底是干什么的?

A:它是设备和应用之间的"消息邮局":成千上万台设备把数据发给 Broker,应用/数据库按主题订阅,Broker 负责路由、缓存、转发和鉴权。设备不直接连数据库,而是连这个消息中间件,解耦之后才能接大规模设备、做云边协同。工业物联网里它几乎是标配。

Q:EMQX 和 Mosquitto 到底怎么选?

A:设备规模大(成百上千上万)、要规则引擎和数据集成、做云原生和国产替代,选 EMQX;只是几十台设备做简单中转、跑在资源受限的边缘网关或树莓派上,选 Mosquitto——C 写的极轻量,一台小机器就够。一句话:大平台选 EMQX,小中转选 Mosquitto。

Q:EMQX 是国产的吗?

A:是。EMQX 由杭州映云科技(EMQ)开发,是国产开源项目,在全球 MQTT Broker 市场份额领先,也有企业版提供商业 SLA。做信创、国产化项目时它是最主流的选择。

Q:小项目有必要上 EMQX 吗?

A:没必要。就几台设备、本地测试或简单中转,Mosquitto 几十兆内存就够,部署更简单。EMQX 的优势在大规模并发、规则引擎、集群和数据集成,小项目用它属于高射炮打蚊子。设备数上到几十上百、要接数据库/做云边协同时再上 EMQX。

Q:这三个都支持 MQTT 5.0 吗?

A:都支持 MQTT 5.0。其中 HiveMQ 对 MQTT 5.0 标准的遵循最完整,EMQX 也完整支持并在此基础上加了大量企业级能力,Mosquitto 2.0 起支持 5.0。做新协议特性(共享订阅、消息过期、主题别名)时三者都够用。

Q:HiveMQ 和 EMQX 企业版有什么区别?

A:两者都是企业级 MQTT Broker,都支持集群和高可用。HiveMQ 是德国商业产品,在欧洲汽车/工业 IoT 用得多,标准遵循严谨;EMQX 是国产,云原生和数据集成生态更活跃、中文社区友好、私有化部署成本更低。国内项目、要中文支持和国产化,EMQX 更顺。

拿不准你的项目该用哪个 MQTT 服务器?

丁丁做过大量设备接入与云边协同项目,可以根据你的设备规模、网络环境和技术栈,帮你定一套不浪费资源的 MQTT 消息架构。

联系丁丁选型咨询 →