在物联网的数据洪流中,EMQX 像一个永不疲倦的“神经中枢”——它负责连接数以亿计的传感器、设备和应用,确保每一条指令和数据都能在毫秒级时间内准确送达。从智能工厂的预测性维护,到自动驾驶车辆的远程监控,EMQX 正在成为物理世界与数字世界之间的实时数据桥梁。

一、基础与定义:什么是 EMQX?

EMQX 是全球最具可扩展性的开源 MQTT 消息服务器,由 EMQ 公司开发,2012 年启动,采用 Erlang/OTP 语言构建 。截至 2026 年,其 GitHub 星标数达 16.3k,累计 380+ 版本迭代,连接全球超过 1 亿台 物联网设备,服务 50 多个国家的 20,000+ 企业用户 。

EMQX 的核心定位是 “无限连接,任意集成,随处运行” 的大规模分布式物联网接入平台 。它支持 MQTT 3.1、3.1.1、5.0 全版本,以及 MQTT-SN、CoAP、LwM2M、HTTP、QUIC 和 WebSocket 等多协议接入 。

二、核心特点与特性

2.1 产品优势

特点 说明
海量连接 单节点支持 500 万 MQTT 连接,集群可扩展至 1 亿 并发连接 
高性能 单节点每秒可处理 200 万 QoS 0 消息,单节点每秒 80万 QoS 1 消息 
低时延 基于 Erlang/OTP 软实时运行时,消息分发延迟 1~5 毫秒 
高可用 Masterless 分布式集群架构,无单点故障,支持弹性伸缩 
数据集成 企业版提供 40+ 开箱即用的数据集成组件,连接 Kafka、PostgreSQL、InfluxDB、AWS 等 
MQTT 5.0 完整支持 100% 支持 MQTT 5.0 和 3.x 标准 

2.2 分布式架构演进:从 Mnesia 到 Mria

EMQX 5.x 版本最大的架构变革是数据层从 Mnesia 切换到 Mria 。

  • 4.x 及之前(Mnesia):采用全网状复制,每个节点持有全量数据。集群规模受限,每增加一个节点,同步开销呈指数增长。

  • 5.x 之后(Mria):引入核心节点(Core)复制节点(Replicant)的角色分离。核心节点负责数据写入和事务同步,复制节点被动复制数据,承载大量设备连接 。

这种架构将集群节点间的数据同步开销降至最低,是 EMQX 能够支撑亿级连接的关键技术突破 。

2.3 版本对比:开源版 vs 企业版

维度 EMQX 开源版 EMQX 企业版
许可证 Apache 2.0 / BSL 1.1(5.9+) 商业许可证(BSL) 
集群规模 生产环境 < 10 万连接 1 亿连接,100+ 节点 
消息持久化 会话持久化 RocksDB 持久化存储 
数据集成 2 种 40+ 种(Kafka、Oracle、SAP、MongoDB 等)
多租户 不支持 命名空间隔离 
技术支持 社区论坛 7×24 企业级支持 

许可证变更说明:自 5.9 版本起,EMQX 采用商业源码许可证(BSL 1.1),社区版与企业版合并为一个功能完整的平台 。

2.4 EMQX 6.0:融合 MQTT 与消息队列

2025 年 11 月发布的 EMQX 6.0 是继 5.x 系列后的里程碑版本 。核心创新包括:

  • 原生消息队列:将 MQTT 发布/订阅与持久化消息队列统一在同一平台,替代对 RabbitMQ 或 Kafka 的独立部署需求 

  • 命名空间多租户:在同一集群内实现数据和权限的逻辑隔离 

  • AI 集成增强:原生对接 OpenAI、Claude、Gemini,支持实时数据流式传输至 AI Agent 

三、优缺点分析

3.1 优点

优点 说明
可扩展性极强 唯一经过验证支持 1 亿并发连接的 MQTT Broker 
性能卓越 单节点 200 万消息/秒,毫秒级延迟 
生态集成丰富 企业版 40+ 数据集成,原生 AI 对接 
架构先进 Mria 分布式架构、MQTT over QUIC、MQTT 5.0 完整支持 

3.2 缺点

缺点 说明
配置复杂度高 大型集群配置有一定门槛,日志排查可能较复杂 
开源版功能受限 开源版无集群能力,生产环境 < 10 万连接 
许可模式调整 5.9 版本后采用 BSL 许可,部分用户需要适应 
SSL 配置偶发困难 部分用户反馈 SSL 配置可能遇到文档覆盖不足的问题 

四、使用场景与约束

4.1 典型应用场景

场景 说明
车联网 车辆远程监控、OTA 升级、V2X 通信 
工业物联网 设备数据采集、预测性维护、智能工厂 
智能家居 设备联动控制、状态同步 
AI Agent 数据底座 实时流式传输 IoT 数据到 AI 模型 
能源与公用事业 智能电网、可再生能源监控 
电信 5G 平台 垂直行业 MQTT 连接平台 

4.2 与 Azure IoT Hub 的对比

根据 EMQX 官方与 Azure IoT Hub 的架构对比 :

维度 Azure IoT Hub EMQX
核心模式 云网关(分区日志架构) 统一消息中间件(Actor 模型)
MQTT 支持 部分支持 MQTT 3.1.1 完整支持 3.1、3.1.1、5.0 
MQTT 5.0 特性 不支持 完整支持(主题别名、流控等)
共享订阅 不支持 支持 
QoS 2 不支持 支持
多租户 每实例单一租户 命名空间多租户 
连接速率 受 S1/S2/S3 单元限制 受硬件限制,无固定上限

4.3 与其他开源 MQTT Broker 对比

对比维度 EMQX Mosquitto NanoMQ VerneMQ
GitHub Stars 16.3k 10.9k 2.5k 3.6k 
编程语言 Erlang C/C++ C Erlang 
最新版本 v6.2.0 (Apr 2026) v2.1.2 (Feb 2026) v0.24.13 (Apr 2026) v2.1.3 RC1 (Apr 2026) 
集群支持 ✅ 亿级 ⚠️(未稳定)
单节点吞吐 200万消息/秒 12万消息/秒 50万消息/秒
MQTT 5.0 ✅ 完整 ✅ 

2026 年 IEEE/ACM CCGrid 的一项针对 8 种消息中间件(Mosquitto、EMQX、HiveMQ、RabbitMQ、NATS、Redis、Zenoh、ActiveMQ Artemis)的基准测试 显示:

  • 轻量级原生 Broker 延迟 < 1ms,功能丰富的企业级平台有 2-3 倍的开销

  • 高连接负载下,多线程 Broker(如 NATS、Zenoh)扩展性更好,而单线程的 Mosquitto 会提前饱和

  • 基于 Java 的 Broker 内存占用显著高于原生实现,对边缘部署有重要影响 

五、使用示例

5.1 快速安装 EMQX(Ubuntu)

bash

# 更新软件包
apt update

# 下载 EMQX 企业版安装包
wget https://www.emqx.com/zh/downloads/enterprise/5.9.0/emqx-enterprise-5.9.0-ubuntu24.04-amd64.deb

# 安装
sudo dpkg -i emqx-enterprise-5.9.0-ubuntu20.04-amd64.deb

# 启动服务
sudo systemctl start emqx

# 访问 Dashboard:http://localhost:18083(默认账号 admin/public)

5.2 Java MQTT 客户端(Paho)示例

添加 Maven 依赖

xml

<dependency>
    <groupId>org.eclipse.paho</groupId>
    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
    <version>1.2.5</version>
</dependency>

连接与发送消息

java

import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

public class MqttSendExample {
    public static void main(String[] args) throws MqttException {
        String broker = "tcp://localhost:1883";
        String clientId = "java_client_01";
        String topic = "test/topic";

        MqttClient client = new MqttClient(broker, clientId, new MemoryPersistence());
        MqttConnectOptions options = new MqttConnectOptions();
        options.setUserName("admin");
        options.setPassword("public".toCharArray());
        client.connect(options);

        MqttMessage message = new MqttMessage("Hello EMQX!".getBytes());
        message.setQos(1);
        message.setRetained(true);

        client.publish(topic, message);
        client.disconnect();
    }
}

接收消息(订阅回调)

java

client.setCallback(new MqttCallback() {
    @Override
    public void messageArrived(String topic, MqttMessage msg) {
        System.out.println("收到消息: " + new String(msg.getPayload()));
    }
    // 其他回调方法...
});
client.subscribe("test/topic");

六、精进与进阶

6.1 集群部署与性能调优

  • 集群规模规划:核心节点(Core)建议 3-5 个,复制节点(Replicant)根据连接数水平扩展

  • RocksDB 持久化:EMQX 6.0+ 内置 RocksDB 持久化存储,可用于异步消息队列 

  • MQTT over QUIC:针对弱网环境(如车联网)启用 QUIC 协议,提升连接稳定性 

6.2 规则引擎与数据集成

EMQX 内置基于 SQL 的规则引擎,可将 MQTT 消息实时转换、过滤并转发到 40+ 外部系统(Kafka、PostgreSQL、InfluxDB、AWS 等)。在 5.10 版本中,规则引擎已集成 LLM,支持自然语言生成规则 。

6.3 多租户与命名空间

EMQX 6.0 支持命名空间多租户,允许在同一集群内为不同业务部门或客户提供逻辑隔离的 MQTT 服务 。

七、发展趋势

  • 版本演进:EMQX 5.x → 5.9(BSL 许可合并) → 6.0(MQTT + 消息队列统一平台)→ 6.2 持续迭代 

  • AI 深度融合:原生集成 OpenAI、Claude、Gemini,支持 AI Agent 实时数据流 

  • Physical AI:面向机器人、自动驾驶、智能工厂等 Physical AI 场景提供实时消息底座 

  • 跨云/混合云支持:集群连接功能支持多云/混合云部署,避免云供应商锁定 

八、常见问题与解决思路

常见问题 原因 解决思路
集群扩展受限 Mnesia 全网状复制开销 升级到 5.x 使用 Mria 架构
高基数 Tag 性能下降 路由数据全节点复制 使用 AMQ 2.0 基于角色的路由分发(或命名空间隔离)
SSL 配置困难 文档覆盖不足 查阅官方文档和论坛;联系 7×24 技术支持(企业版)
开源版连接数受限 开源版无集群能力 升级企业版或使用 EMQX Cloud 

参考文献

  1. EMQX 企业版产品页

  2. EMQX vs. Azure IoT Hub 深度对比, 2026-01-18 

  3. EMQX 企业版产品规格书, 2024 

  4. Benchmarking Message Brokers for IoT Edge Computing. arXiv:2603.21600, 2026-03-23 

  5. EMQX 版本与许可变更, 2025 

  6. EMQX 产品概览 

  7. EMQX 架构演进分析(Mnesia vs Mria). 微信公众平台, 2022-11-16

  8. Comparison of Open Source MQTT Brokers 2026, 2026-05-01 

  9. Java + MQTT + EMQX 实战. 阿里云开发者社区, 2025-09-17 

  10. EMQX 6.0 发布报道. China Daily, 2025-11-03 

  11. EMQX 官方文档概览. docs.emqx.com 

  12. EMQX Gartner Peer Insights 评价

更多推荐