版本 1.0.32 · 免费,无限制

人人可用的 MQTT 代理服务器

ELX-MQTT Broker 是一款用 Go 编写、自带完整 Web 控制台的代理服务器。MQTT 3.1.1 和 5.0 完全自行实现,未借助任何第三方库。一个可执行文件,没有依赖:装上就能跑。

Debian · Ubuntu · Windows x64 · Linux arm64 与 armhf

在 Debian / Ubuntu 上安装
$ 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
2 支持的协议版本:3.1.1 和 5.0
0 第三方 MQTT 库
7 控制台语言
6 凭据来源

代理服务器该有的一切,外加一个可以随时观察的控制台

它不只是把消息投递出去,还会清楚地展示正在发生什么:谁连着、哪些主题是活的、限流丢掉了什么。

完整的 MQTT 5.0

全部报文属性、主题别名、通过 $share 的共享订阅、订阅标识符、No Local、Retain Handling、遗嘱延迟、消息过期、原因码以及 AUTH 报文。

会动的控制台

消息速率与流量曲线、机器健康状况、活跃主题和事件流,全部通过 WebSocket 推送,无需刷新页面。

主题级别的权限

ACL 规则由过滤器、访问方式以及允许或拒绝三部分组成,默认一律拒绝;占位符 $u 只需一行就能把客户端限制在自己的分支里。

代理之间的桥接

服务器层面的双向主题转发:out/in/both 三种方向、前缀、TLS、回环保护和自动重连。

延迟发布

向 $delayed/60/topic 发布的消息会在一分钟后送达订阅者。兼容 EMQX,重启后依然有效,队列可在控制台中查看和取消。

洪泛控制与主题限流

每个连接一个令牌桶,另有按主题模式设置的规则:把一条数据流稀释到指定频率(保留最新值),或者整条丢弃。

六种凭据来源

内置列表、MariaDB/MySQL、SQLite、CSV、JWT 以及外部 HTTP 服务。切换在运行中完成,无需重启代理服务器。

REST API

控制台能做的一切,凭 Bearer 令牌都能做到:在你自己的系统里创建设备并分配权限。也支持只读令牌。

重启不丢数据

保留消息、持久会话、离线队列和延迟消息都存放在纯 Go 的 SQLite 中,不需要 CGO,也不需要外部数据库。

安装只要一分钟

Debian 和 Ubuntu 用 APT 仓库里的软件包,Windows 用现成的可执行文件。不需要 Docker,不需要运行时,也不用另装库。

  1. 添加密钥和仓库

    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
  2. 更新软件包列表

    sudo apt-get update
  3. 安装代理服务器

    sudo apt-get install elxmqttbroker
  1. 从下载页取得安装程序

  2. 运行它并选择「安装为 Windows 服务」

  3. 打开控制台,用 admin / admin 登录

    http://localhost:8567

安装完成后,控制台在 :8567 等待,MQTT 在 :1883,TLS 上的 MQTT 在 :8883。默认账号是 admin / admin,请在首次登录时更改。

全部下载方式 →

界面长这样

深色与浅色主题、七种界面语言、实时曲线。控制台是代理服务器的一部分,不需要另外安装任何东西。

截图: 界面长这样

全部 24 个界面 →

支持的内容

编解码器可处理全部 15 种报文,主题匹配严格按照规范中的表格执行。

3.1.1 与 5.0 共有

  • 完整握手的 QoS 0、1、2
  • 重连后的重发
  • 保留消息以及整条分支的清除
  • 遗嘱消息
  • 清理会话与持久会话
  • 保活与会话接管
  • 通配符 + 和 #
  • 带统计数据的 $SYS 主题树

仅 MQTT 5.0

  • 全部报文属性
  • 双向的主题别名
  • 会话过期间隔
  • Receive Maximum 与流量控制
  • 订阅标识符
  • 共享订阅 $share/组/过滤器
  • No Local 与 Retain As Published
  • Retain Handling 0/1/2
  • 遗嘱延迟与消息过期
  • Content Type、Response Topic、Correlation Data
  • 用户属性与原因码
  • 服务端 DISCONNECT 以及 AUTH 报文

传输方式

  • :1883 — TCP 上的 MQTT
  • :8883 — TLS 上的 MQTT
  • :8567/mqtt — WebSocket 上的 MQTT
  • :8567 — Web 控制台
  • 首次启动时生成 TLS 证书
  • 自有证书写在配置文件里

经过负载检验

在两套环境上做过压力测试:一套经网络,一套走回环。这里只列要点,含方法与完整表格的报告就在一次点击之外。

30,000 并发连接,零失败
约 1 毫秒 经网络的发布者 → 代理 → 订阅者端到端时延
135 万/秒 扇出 ×100 时投递给订阅者的消息
0 所有测试中代理日志里的错误

完整的压力测试报告 →

装上试试看

代理服务器免费,设备数和消息数不受限制,也无需注册。