Коротко

Для устройств разницы нет: это обычный MQTT-брокер на портах 1883 и 8883, клиенты и библиотеки менять не нужно. Разница — в том, как брокером управлять.

  • Веб-панель встроена: клиенты и их сессии, подписки, retain-сообщения, живой поток, трафик, пользователи, ACL, мосты и TLS — в одном окне, на семи языках.
  • Изменения применяются на лету: новый пользователь, правило ACL, мост или сертификат начинают действовать без перезапуска и без правки конфигурации руками.
  • Учётки из внешних источников встроены: MySQL/MariaDB, SQLite, CSV, JWT и HTTP-сервис переключаются в панели — отдельные плагины собирать не нужно.
  • REST API для всего, что есть в панели: завести устройство вместе с правами можно одним POST-запросом.

Сравнение с Mosquitto

Сравниваем стандартную поставку открытого Mosquitto — то, что ставится из пакета, без сторонних дополнений.

ELX-MQTT BrokerEclipse Mosquitto
ЛицензияБесплатно, в том числе в коммерческих продуктах; код закрытОткрытый код (EPL-2.0 / EDL-1.0)
РеализацияGo, один статический файл без зависимостейC, очень компактный
Версии MQTT3.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Официальный установщик
LinuxAPT-репозиторий для Debian и Ubuntu: amd64, arm64, armhfПакеты почти во всех дистрибутивах
Производительность на одном стенде мы не сравнивали, поэтому цифр «кто быстрее» здесь нет. Свои результаты — до 30 000 соединений, задержка от 73 мкс, доставка до 1,35 млн сообщений в секунду — с методикой описаны в отчёте о нагрузочном тестировании.

Когда лучше остаться на 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 млн сообщений в секунду.