Коротко
Для устройств разницы нет: это обычный MQTT-брокер на портах 1883 и 8883, клиенты и библиотеки менять не нужно. Разница — в том, как брокером управлять.
- Веб-панель встроена: клиенты и их сессии, подписки, retain-сообщения, живой поток, трафик, пользователи, ACL, мосты и TLS — в одном окне, на семи языках.
- Изменения применяются на лету: новый пользователь, правило ACL, мост или сертификат начинают действовать без перезапуска и без правки конфигурации руками.
- Учётки из внешних источников встроены: MySQL/MariaDB, SQLite, CSV, JWT и HTTP-сервис переключаются в панели — отдельные плагины собирать не нужно.
- REST API для всего, что есть в панели: завести устройство вместе с правами можно одним POST-запросом.
Сравнение с Mosquitto
Сравниваем стандартную поставку открытого Mosquitto — то, что ставится из пакета, без сторонних дополнений.
| ELX-MQTT Broker | Eclipse Mosquitto | |
|---|---|---|
| Лицензия | Бесплатно, в том числе в коммерческих продуктах; код закрыт | Открытый код (EPL-2.0 / EDL-1.0) |
| Реализация | Go, один статический файл без зависимостей | C, очень компактный |
| Версии MQTT | 3.1.1 и 5.0 на одном порту | 3.1, 3.1.1 и 5.0 |
| Веб-интерфейс | Встроен | В стандартную поставку не входит |
| Пользователи и ACL | В панели или через REST API, deny-by-default, шаблон $u/# | Файл паролей и файл ACL или плагин dynamic security с утилитой mosquitto_ctrl |
| Внешние источники учёток | MySQL/MariaDB, SQLite, CSV, JWT, HTTP — встроены | Через плагины |
| Мосты | Настраиваются в панели, со счётчиками | Секции в mosquitto.conf |
| TLS-сертификат | Вкладка «SSL»: загрузить файлы или указать пути, смена без перезапуска | Пути в mosquitto.conf |
| REST API | Встроен, токены с правами «только чтение» | Нет |
| Отложенная публикация | $delayed/{секунды}/{тема}, как в EMQX | Нет |
| WebSocket | Да, на порту панели по пути /mqtt | Да, отдельным слушателем |
| Кластер | Нет, один процесс | Нет |
| Windows | Установщик со службой и правилами брандмауэра или переносимый .exe | Официальный установщик |
| Linux | APT-репозиторий для Debian и Ubuntu: amd64, arm64, armhf | Пакеты почти во всех дистрибутивах |
Когда лучше остаться на Mosquitto
- Нужен открытый код — чтобы читать, проверять или дорабатывать брокер. У ELX-MQTT Broker код закрыт.
- Очень слабое железо: роутер с OpenWrt или устройство с несколькими мегабайтами памяти. Mosquitto занимает сотни килобайт, исполняемый файл ELX — около 13 МБ.
- Конфигурация уже живёт в git и раскатывается Ansible или похожим инструментом — текстовый конфиг Mosquitto для этого естественнее.
- Нужен кластер. Тогда смотрите не на Mosquitto и не на ELX, а на EMQX, HiveMQ или VerneMQ.
Как перейти с Mosquitto
Устройства переделывать не нужно: адрес, порты и протокол остаются прежними. Переносится только то, что лежало в конфигурации Mosquitto.
- Запустите ELX рядом на других портах и проверьте на нескольких устройствах:
-mqtt :1884 -mqtt-tls :8884 -web :8567. - Пользователи заводятся в разделе «Пользователи» или скриптом через
POST /api/users. Если учётки уже лежат в базе MySQL/MariaDB, её можно подключить как источник без переноса. - ACL: шаблон
%uиз Mosquitto записывается как$u. Правила проверяются сверху вниз до первого совпадения, всё, что не разрешено, запрещено. - Мосты создаются в панели: адрес, логин, TLS и правила «фильтр + направление + QoS».
- Сертификат загружается на вкладке «SSL» или указывается путями к тем же файлам.
Когда всё проверено, остановите Mosquitto и верните брокеру стандартные порты 1883 и 8883.
Вопросы
Устройства, настроенные на Mosquitto, будут работать с ELX-MQTT Broker?
Да. Оба брокера реализуют один и тот же протокол MQTT 3.1.1 и 5.0, поэтому клиенты и библиотеки менять не нужно — достаточно тех же адреса, порта и учётных данных.
У Mosquitto есть веб-интерфейс?
В стандартную поставку открытого Mosquitto веб-интерфейс не входит: брокер настраивается файлом mosquitto.conf, файлами паролей и ACL или плагином dynamic security через утилиту mosquitto_ctrl. В ELX-MQTT Broker панель встроена.
ELX-MQTT Broker — открытый проект?
Нет. Код закрыт, но брокер бесплатен без ограничений, в том числе в коммерческих продуктах, и не ограничивает число устройств и сообщений.
Можно ли перенести пользователей из Mosquitto?
Пароли в файле Mosquitto хранятся хешами, поэтому учётки заводятся заново — вручную в панели или скриптом через REST API. Если учётки хранятся в MySQL или MariaDB, базу можно подключить как источник аутентификации.
Что быстрее — ELX-MQTT Broker или Mosquitto?
На одном стенде мы их не сравнивали. Наши собственные замеры с методикой опубликованы в отчёте о нагрузочном тестировании: до 30 000 одновременных соединений и доставка до 1,35 млн сообщений в секунду.