什么是MQTT broker
看到标题,一些小伙伴可能会存在疑问的进入了本篇博客——什么是MQTT broker?简单来说MQTT broker就是接收以及转发MQTT消息的服务器平台,所以,MQTT Broker 的核心作用就是在物联网架构中充当消息代理(或消息中间件),负责接收所有客户端的连接,处理消息的订阅(Subscribe)、发布(Publish)和路由(Routing),确保消息能够准确地从发布者送达订阅者。我们之前可能也或多或少的用过一些云服务厂商的物联网平台,比如阿里云的物联网平台、onenet以及新大陆等等。使用这些厂商的平台我们都会去按照他们各自标准接口去注册产品以及使用。这种方式固然方便,但也意味着我们的设备和数据需要去适应平台的“规矩”。举个典型的例子:假如我们的项目受硬件设备所限,只能发送原始二进制格式的数据以节省流量和算力,而大多数云厂商的接入标准却要求必须以特定的JSON字符串格式发送。这时,我们就陷入了两难——要么更换硬件,要么增加网关进行协议转换,既增加了复杂度,也提高了成本。
如果你渴望拥有一个完全由自己掌控、高度定制化且不受厂商限制的MQTT服务器,一个能原生接纳各种数据格式,并让你自由定义处理逻辑的平台,那么,自建MQTT Broker就是你正在寻找的答案。而今天,我们要使用的正是业界顶级的开源MQTT Broker——EMQX来搭建这样一个平台。
本篇文章博主主要带大家在Ubuntu的环境下去部署EMQX,当然也有小伙伴可能对于Linux的环境不太熟悉,也可以在window平台下完成搭建。大家可以自行阅读下面这篇博客。
手把手教你搭建本地MQTT服务器,并通过QT连接-CSDN博客
EMQX的环境搭建
1.curl工具安装
curl是一个功能强大的命令行HTTP客户端,主要用途包括:
- 从服务器下载文件
- 向服务器上传文件
- 测试 API 接口
所以有了curl工具我们就可以到EMQX官网上去下载EMQX的安装脚本了,这是安装过程中的关键一步。
安装如下命令:
sudo apt update
sudo apt install curl -y
curl --version
当出现curl的版本信息,则证明curl工具安装成功!

2.获取EMQX安装脚本
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash

3.EMQX安装
sudo apt-get install emqx -y #安装EMQX软件
sudo systemctl start emqx #启动EMQX
sudo systemctl status emqx #查看当前EMQX的状态

当状态显示为active (running)时,表示EMQX已成功安装并正常运行!
安装完成后,可以通过浏览器访问EMQX的管理控制台:
- 地址:
http://localhost:18083 - 默认用户名:
admin - 默认密码:
public

MQTTX安装
MQTTX是与EMQX配套使用的调试工具,可以模拟设备端进行消息的订阅和发布,验证整个通信链路是否正常。下面我家来为大家介绍一下MQTTX的安装方法,过程也是非常简单。
在浏览器中搜索https://mqttx.app/zh/downloads这个地址,并选中Linux下载界面。

我们需要下载x86-64架构的版本,AppImage是他的图形化app,非常容易入手,所以主要选择它为大家介绍一下使用方法。

当然MQTTX同样也有命令行工具,感兴趣的小伙伴可以一试。安装方法如下所示:
curl -LO https://www.emqx.com/en/downloads/MQTTX/v1.12.1/mqttx-cli-linux-x64
sudo install ./mqttx-cli-linux-x64 /usr/local/bin/mqttx
在浏览器下载完成后会得到以下文件:

默认情况下该文件是不可执行的。所以我们要赋予他可执行权限,然后并运行:
chmod +x MQTTX-1.12.1.AppImage
./MQTTX-1.12.1.AppImage
运行成功后会弹出APP界面,表示安装成功!

我们可以设置以下语言,便于使用。

EMQX和MQTTX联通测试
1. 配置客户端认证
当环境都搭建完成后接下来该进行联通性测试啦!
在EMQX管理控制台中,我们需要为客户端设备配置接入权限:
- 左侧菜单选择 Authentication
- 点击 Create 按钮
- 选择认证方式(推荐使用Password-Based)
- 数据库默认Built-in DataBase
- 创建用户并设置用户名和密码
这个认证信息相当于云平台中的”设备三元组”,是客户端连接EMQX的凭证。操作步骤如下图所示:






下面的这个Username和Password可以自己输入,并且需要我们记住,后续的MQTTX链接需要用到!

当创建完成后,就相当于有了客户端的连接权限,客户端可以拿着这个信息接入到EMQX,这样即可完成MQTT的通讯!
2. 通信测试
我们创建两个模拟设备来测试完整的MQTT通信流程:
订阅端设备 (test_sub):
- 连接到EMQX服务器
- 订阅主题:
/test/topic
发布端设备 (testtwo_pub):
- 连接到EMQX服务器
- 向主题:
/test/topic发布测试消息
如果订阅端设备能够正常接收到发布端发送的消息,说明整个MQTT通信链路配置成功。详细创建步骤如下图所示:



创建的这个设备主要用来测试订阅功能,我们可以点击“添加订阅”。


当订阅Topic完成后我们需要按照同样的方法再创建一个设备——testtwo_pub用于发布消息功能测试。

准备工作都完成之后,接下来就开始我们的测试!点进我们创建的testtwo_pub,在底部的Topic输入我们想要测试的内容。



整个过程如下图所示:

至此,我们已通过MQTTX成功模拟了从设备连接到消息收发的完整通信流程。在实际项目中,只需将MQTTX替换为真实的物理设备,并将其配置为连接到您的EMQX服务器,即可构建一个功能完备的物联网系统。这套自建方案的成功部署,标志着我们实现了从依赖第三方云平台到拥有一个高度自主、灵活可控的物联网通信核心的跨越。
