完整的 MQTT 5.0
全部报文属性、主题别名、通过 $share 的共享订阅、订阅标识符、No Local、Retain Handling、遗嘱延迟、消息过期、原因码以及 AUTH 报文。
ELX-MQTT Broker 是一款用 Go 编写、自带完整 Web 控制台的代理服务器。MQTT 3.1.1 和 5.0 完全自行实现,未借助任何第三方库。一个可执行文件,没有依赖:装上就能跑。
Debian · Ubuntu · Windows x64 · Linux arm64 与 armhf
$ sudo apt-get install elxmqttbroker Setting up elxmqttbroker (1.0.32) ... Created symlink /etc/systemd/system/multi-user.target.wants/elxmqttbroker.service ELX MQTT Broker 1.0.32 — listening on :1883, :8883, dashboard on :8567 state restored retained=128 sessions=7 subscriptions=34 delayed=2
它不只是把消息投递出去,还会清楚地展示正在发生什么:谁连着、哪些主题是活的、限流丢掉了什么。
全部报文属性、主题别名、通过 $share 的共享订阅、订阅标识符、No Local、Retain Handling、遗嘱延迟、消息过期、原因码以及 AUTH 报文。
消息速率与流量曲线、机器健康状况、活跃主题和事件流,全部通过 WebSocket 推送,无需刷新页面。
ACL 规则由过滤器、访问方式以及允许或拒绝三部分组成,默认一律拒绝;占位符 $u 只需一行就能把客户端限制在自己的分支里。
服务器层面的双向主题转发:out/in/both 三种方向、前缀、TLS、回环保护和自动重连。
向 $delayed/60/topic 发布的消息会在一分钟后送达订阅者。兼容 EMQX,重启后依然有效,队列可在控制台中查看和取消。
每个连接一个令牌桶,另有按主题模式设置的规则:把一条数据流稀释到指定频率(保留最新值),或者整条丢弃。
内置列表、MariaDB/MySQL、SQLite、CSV、JWT 以及外部 HTTP 服务。切换在运行中完成,无需重启代理服务器。
控制台能做的一切,凭 Bearer 令牌都能做到:在你自己的系统里创建设备并分配权限。也支持只读令牌。
保留消息、持久会话、离线队列和延迟消息都存放在纯 Go 的 SQLite 中,不需要 CGO,也不需要外部数据库。
Debian 和 Ubuntu 用 APT 仓库里的软件包,Windows 用现成的可执行文件。不需要 Docker,不需要运行时,也不用另装库。
添加密钥和仓库
sudo wget -qO /usr/share/keyrings/elx-repo.gpg https://repo.um-d.ru/elx-repo.gpg
echo "deb [signed-by=/usr/share/keyrings/elx-repo.gpg] https://repo.um-d.ru stable main" | sudo tee /etc/apt/sources.list.d/elx-repo.list
更新软件包列表
sudo apt-get update
安装代理服务器
sudo apt-get install elxmqttbroker
从下载页取得安装程序
运行它并选择「安装为 Windows 服务」
打开控制台,用 admin / admin 登录
http://localhost:8567
安装完成后,控制台在 :8567 等待,MQTT 在 :1883,TLS 上的 MQTT 在 :8883。默认账号是 admin / admin,请在首次登录时更改。
编解码器可处理全部 15 种报文,主题匹配严格按照规范中的表格执行。
在两套环境上做过压力测试:一套经网络,一套走回环。这里只列要点,含方法与完整表格的报告就在一次点击之外。