物联网开发必备:常见MQTT协议服务器Broker--EMQX
文章目录
- 物联网开发必备:常见MQTT协议服务器Broker--EMQX
-
- [一、EMQX 是什么](#一、EMQX 是什么)
-
- [为什么选择 EMQX](#为什么选择 EMQX)
- 二、核心功能与能力概览
-
- [1. 完整的 MQTT 协议支持](#1. 完整的 MQTT 协议支持)
- [2. 可视化管理控制台](#2. 可视化管理控制台)
- [3. 规则引擎与数据集成](#3. 规则引擎与数据集成)
- [4. 安全与认证](#4. 安全与认证)
- 三、三种安装方式,按需选择
-
- [方式一:Docker 一键部署(推荐新手)](#方式一:Docker 一键部署(推荐新手))
- [方式二:Linux 系统安装包部署(生产推荐)](#方式二:Linux 系统安装包部署(生产推荐))
- [方式三:Windows 本地安装](#方式三:Windows 本地安装)
- 四、快速上手:三步完成消息收发
-
- [第一步:登录 Dashboard](#第一步:登录 Dashboard)
- [第二步:使用 MQTT 客户端连接](#第二步:使用 MQTT 客户端连接)
- 第三步:订阅主题并发布消息
- 五、基础配置与常用操作
-
- [1. 配置文件位置](#1. 配置文件位置)
- [2. 常用配置项](#2. 常用配置项)
- [3. 常用命令](#3. 常用命令)
- [4. 添加认证用户](#4. 添加认证用户)
- 六、典型应用场景
- 七、写在最后
在物联网项目开发中,选择一款稳定、高性能的 MQTT Broker 是整个系统架构的基石。如果你正在寻找一款开源、功能强大、社区活跃且生产级可用的 MQTT 消息服务器,EMQX 绝对是绕不开的首选方案。本文将带你从零开始,全面认识 EMQX,并完成从安装到实际使用的完整流程。
emqx Github开源地址:https://github.com/emqx/emqx,emqx 官网地址:https://www.emqx.com/en
一、EMQX 是什么
EMQX(Erlang MQTT Broker)是由杭州映云科技(EMQ)开源的云原生分布式物联网 MQTT 消息服务器,也是目前全球应用最广泛的开源 MQTT Broker。它基于高性能的 Erlang/OTP 语言开发,专为海量物联网设备连接与高并发消息吞吐设计,单集群可支持亿级 MQTT 连接,是国内物联网领域的事实标准产品。
简单来说,EMQX 就是 MQTT 协议的服务端实现 ------ 设备端通过 MQTT 协议连接上来,发布消息、订阅主题,EMQX 负责完成消息的路由、转发、存储与管理。

为什么选择 EMQX
- 性能强悍:单节点支持百万级并发连接,集群可达亿级,消息吞吐可达百万级 TPS
- 协议完整:完整支持 MQTT 3.1 / 3.1.1 / 5.0 全版本标准,同时兼容 MQTT over QUIC、WebSocket、CoAP 等多种协议
- 开箱即用:内置可视化 Dashboard,丰富的管理 API,部署后立即可用
- 生态完善:配套 MQTTX 客户端、Neuron 工业网关等周边工具,社区活跃
- 扩展能力强:内置规则引擎、数据集成,可无缝对接 MySQL、Kafka、InfluxDB 等数十种后端服务
- 开源免费:开源版完全满足绝大多数中小型项目需求,企业版提供更多高级功能与商业支持
二、核心功能与能力概览
1. 完整的 MQTT 协议支持
EMQX 是目前对 MQTT 标准支持最完整的 Broker 之一:
- 协议版本:MQTT 3.1、MQTT 3.1.1、MQTT 5.0 全版本兼容
- QoS 等级:完整支持 QoS 0 / QoS 1 / QoS 2 三级服务质量
- 核心特性:保留消息(Retain)、遗嘱消息(Will)、持久会话、共享订阅、主题重写、延迟发布
- 传输方式:支持 TCP 明文、TLS/SSL 加密、WebSocket、MQTT over QUIC
2. 可视化管理控制台
内置 Web Dashboard 管理后台,无需额外安装,启动即可通过浏览器访问,提供:
- 连接数、消息吞吐、主题数量等实时运行指标监控
- 客户端连接管理、订阅查询、消息追踪
- 用户认证、权限配置、规则引擎可视化编排
- 系统日志、告警配置、集群状态查看
3. 规则引擎与数据集成
这是 EMQX 最具实用价值的特性之一。通过 SQL 风格的规则语句,可以对设备上报的消息进行实时过滤、转换、计算,并将结果转发到各类外部系统:
- 数据库:MySQL、PostgreSQL、MongoDB、Redis、InfluxDB、TDengine 等
- 消息队列:Kafka、RabbitMQ、RocketMQ、Pulsar 等
- 云服务:各类云数据库、对象存储、函数计算
- HTTP 服务:自定义 Webhook 回调
4. 安全与认证
- 支持用户名密码认证、JWT 认证、PSK 认证、X.509 证书认证
- 细粒度 ACL 权限控制,可按客户端、主题限制发布 / 订阅权限
- 全链路 TLS/SSL 加密,支持国密算法
- 连接限速、消息速率限制、黑名单等防护机制
三、三种安装方式,按需选择
EMQX 支持多种部署方式,下面介绍最常用的三种,新手推荐优先使用 Docker 快速体验。
方式一:Docker 一键部署(推荐新手)
这是最快、最省心的安装方式,适合本地开发、测试环境使用。
前提:已安装 Docker 环境。
执行以下命令即可启动:
bash
docker run -d \
--name emqx \
-p 1883:1883 \
-p 8883:8883 \
-p 8083:8083 \
-p 8084:8084 \
-p 18083:18083 \
emqx/emqx:latest
端口说明:
1883:MQTT TCP 明文端口8883:MQTT SSL/TLS 加密端口8083:MQTT over WebSocket 端口8084:MQTT over WebSocket SSL 端口18083:Dashboard 管理后台端口
启动完成后,浏览器访问 http://服务器IP:18083 即可进入管理后台,默认账号密码:
- 用户名:
admin - 密码:
public
首次登录后建议立即修改默认密码。
以本地为例:访问http://localhost:18083/


方式二:Linux 系统安装包部署(生产推荐)
以 Ubuntu/Debian 系统为例,使用官方 deb 包安装,适合生产环境部署。
1、下载安装包
前往 EMQX 官方下载页
选择对应系统版本,或直接命令行下载:
bash
# 以 Ubuntu 22.04 amd64 为例
wget https://www.emqx.com/zh/downloads/broker/5.9.0/emqx-5.9.0-otp26.2.1-1-ubuntu22.04-amd64.deb
2、安装
bash
sudo dpkg -i emqx-5.9.0-otp26.2.1-1-ubuntu22.04-amd64.deb
3、启动服务
bash
# 启动
sudo systemctl start emqx
# 设置开机自启
sudo systemctl enable emqx
# 查看状态
sudo systemctl status emqx
方式三:Windows 本地安装
Windows 环境主要用于开发调试,步骤同样简单:
- 前往官网下载 Windows 版本 zip 安装包
- 解压到任意目录,如
D:\emqx - 打开命令提示符,进入解压目录的
bin文件夹 - 执行启动命令:
bash
emqx start
- 同样通过
http://localhost:18083访问 Dashboard
注意:Windows 版本仅建议用于开发测试,不推荐生产环境使用。
四、快速上手:三步完成消息收发
安装完成后,我们来做一次完整的连接 - 订阅 - 发布测试,验证服务是否正常运行。
第一步:登录 Dashboard
打开浏览器访问 http://你的服务器IP:18083,输入默认账号 admin / public 登录。登录后首页可以看到当前连接数、消息吞吐、节点状态等核心指标,这说明服务已经正常运行。
第二步:使用 MQTT 客户端连接
推荐使用官方配套的 MQTTX 客户端工具,这是一款跨平台的 MQTT 调试工具,界面友好,功能齐全。
连接配置:
- 名称:随意填写,如
本地EMQX测试 - 主机:选择
mqtt://协议,填写你的服务器 IP - 端口:
1883 - 客户端 ID:保持自动生成即可,确保全局唯一
- 用户名 / 密码:默认无需认证,生产环境建议配置
点击「连接」,状态变为绿色即连接成功。
第三步:订阅主题并发布消息
- 订阅主题 :添加订阅,主题填写
test/topic01,QoS 选择 0,确认订阅 - 发布消息 :在发布区域,主题填
test/topic01,Payload 输入Hello EMQX!,点击发送 - 查看结果:订阅列表中会立即收到刚发布的消息
同时,回到 EMQX Dashboard 的「客户端」页面,可以看到刚刚连接的 MQTTX 客户端信息;在「主题」页面可以查询到当前的订阅关系。
五、基础配置与常用操作
1. 配置文件位置
- Docker 版:配置文件位于容器内
/opt/emqx/etc/emqx.conf - Linux 安装版:
/etc/emqx/emqx.conf - Windows 版:安装目录下
etc/emqx.conf
2. 常用配置项
bash
# MQTT TCP 监听端口
listener.tcp.default.bind = 0.0.0.0:1883
# 最大连接数限制
listener.tcp.default.max_connections = 1024000
# Dashboard 监听端口
dashboard.listeners.http.bind = 0.0.0.0:18083
# 开启匿名认证(生产建议关闭)
mqtt.allow_anonymous = true
修改配置后需重启 EMQX 生效。
3. 常用命令
bash
# 启动
emqx start
# 停止
emqx stop
# 重启
emqx restart
# 查看状态
emqx status
# 进入控制台
emqx console
4. 添加认证用户
生产环境务必关闭匿名登录,配置用户名密码认证:
- 进入 Dashboard → 访问控制 → 认证
- 创建认证,选择「Password-Based」→「Built-in Database」
- 进入用户管理页面,添加用户名和密码
- 回到「设置」中关闭匿名认证
六、典型应用场景
- 智能家居平台:海量智能设备接入,APP 远程控制,场景联动消息下发
- 工业物联网:产线传感器数据采集,设备状态监控,PLC 远程控制
- 车联网平台:车辆位置实时上报,OTA 升级通知,远程诊断指令
- 智慧园区:门禁、路灯、监控、环境监测设备统一接入管理
- 消息推送服务:移动端、Web 端实时消息推送,在线状态同步
七、写在最后
EMQX 的强大之处远不止本文介绍的这些。当你熟悉了基础使用后,还可以进一步探索规则引擎做数据清洗转发、搭建集群实现高可用、配置 TLS 证书保障传输安全、对接时序数据库存储历史数据等进阶玩法。
对于大多数物联网项目而言,EMQX 开源版的能力已经完全够用。它的优势在于性能足够强、生态足够完善、文档和社区资源丰富,遇到问题很容易找到解决方案。如果你正在做物联网相关的开发,非常建议把 EMQX 纳入你的技术栈。
下一步,不妨试着用你熟悉的编程语言(Python、Java、JavaScript 等)编写一个简单客户端,真正动手连接 EMQX 完成消息收发,理解会更加深刻。