使用EMQX搭建MQTT服务器

序言

早初是使用阿里云和 OneNET 平台作为 MQTT 服务器进行使用,但有些功能需要 money,所以就想着能不能自己搭建个简易的服务器来耍耍,查找资料找到 EMQX 很符合自己的需求。

EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。

作为全球最具扩展性的 MQTT 消息服务器,EMQX 提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,帮助您快速构建关键业务的物联网平台与应用。

EMQX 分为两个版本:开源版和商业版,这里作为学习使用,使用开源版即可,文档如下:

产品概览 | EMQX 5.0 文档

Windows安装EMQX

EMQX 支持多平台安装,这里我使用 Windows 来安装,下载地址:

Release EMQX v5.3.2 · emqx/emqx (github.com)

目前一些较新的版本好像没有 Windows 版本的。

解压得到:

image-20240722225644937

当前目录下打开 Windows PowerShell 命令行窗口,输入命令

1
.\bin\emqx start

启动的时候会弹出防火墙提示窗口,点击允许访问。成功会提示如下信息:

1
2
EMQX_NODE__DB_ROLE [node.role]: core
EMQX_NODE__DB_BACKEND [node.db_backend]: mnesia

常用命令:

1
2
3
.\bin\emqx start    启动
.\bin\emqx stop 停止
.\bin\emqx restart 重启

更多命令:

命令行 | EMQX 5.0 文档

配置EMQX服务器

登录管理控制台

启动后,浏览器输入 127.0.0.1:18083 就可以访问 EMQX 的后台管理界面。

默认用户名:admin,密码:public,第一次登录会提示修改密码,可以选择跳过。

image-20240723001904503

MQTT 配置

可以自定义设置 MQTT 的参数(http://127.0.0.1:18083/#/mqtt/general):

image-20240723002354191

测试 MQTT 通信

测试 MQTT 通信:打开 WebSocket 客户端(http://127.0.0.1:18083/#/websocket),点击连接——订阅——发布,显示接收消息表示通信正常。

image-20240723002109740

主题发布和主题订阅的格式可以自定义。

QT-mqtt 客户端测试

可以看到自己的客户端能够接收订阅主题发布的消息和发布消息到对应主题。

image-20240723004943925

image-20240723004956314

http://127.0.0.1:18083/#/clients 可以查看连接的设备:

image-20240723005005465

设置客户端认证

EMQX 默认配置中启用了匿名认证,任何客户端都能接入 EMQX,这里可以设置客户端认证(http://127.0.0.1:18083/#/authentication),设置认证方式为 Password-Based,数据源为内置数据库。

image-20240723005332343

创建完成后添加用户

image-20240723005622147

再次使用客户端测试:

image-20240723005701911

没有使用创建好的用户进行连接,连接失败,修改添加的用户信息再次连接:

image-20240723005806009

总结

EMQX 还有很多功能,例如:

  • 设置每个客户端的权限,限制它是否可以发布主题和订阅主题;
  • 数据转发,将数据妆发到自己的 HTTP 服务器或者其他的 MQTT 服务器。

我目前暂时只需要用到文中介绍的功能,做个记录。

搭建自己的MQTT服务器、实现设备上云(Windows+EMQX)_mqtt服务器搭建-CSDN博客