Есть ли способ сохранить полезную нагрузку Mosquitto в базе данных MySQL для истории?

Я использую брокера Mosquitto MQTT и хочу хранить каждое опубликованное сообщение в базе данных MySQL без создания клиента и подписки на подстановочный знак #.

Я нашел этот https://github.com/jpmens/mosquitto-auth-plug, но мой английский недостаточно хорош, чтобы понять его полностью ... Я думаю, что это только для того, чтобы хранить постоянные сообщения, чтобы брокер мог отправить их позже. Я прав ?

Спасибо


person Phoste    schedule 23.07.2015    source источник


Ответы (1)


Модуль mosquitto-auth-plugin использует базу данных для хранения имени пользователя/пароля и информации ACL, а не содержимого сообщения.

Написать некоторый код для хранения сообщений в базе данных от любого брокера MQTT относительно просто.

Существует несколько подходов:

  1. Вы можете написать небольшое приложение java/python/nodejs, чтобы сделать это, используя одну из библиотек MQTT. для данного языка.
  2. Вы можете использовать что-то вроде Node-RED для создания потока, который будет записывать сообщения в базу данных.
  3. Вы можете использовать брокера HiveMQ вместо Mosquitto, который имеет механизм плагинов, поддерживающий хранение сообщений в базе данных.
person hardillb    schedule 23.07.2015
comment
Вот что я подумал о mosquitto-auth-plugin... Мой английский не такой уж и ржавый. Я уже написал приложение на java с использованием библиотеки paho, но, как сказано в статье о HiveMQ, у него есть несколько проблем, таких как повторяющиеся сообщения с постоянным сообщением. Думаю, я попробую HiveMQ вместо Mosquitto... Большое спасибо. - person Phoste; 23.07.2015
comment
@hardillb, похоже, ты действительно хорошо разбираешься в MQTT. Я прочитал несколько ответов, связанных с темой, написанной вами. - person Rajat Saxena; 28.04.2016
comment
@hardillb Что именно вы подразумеваете под 1) - внести изменения в Mosquitto и перекомпилировать? т.е. сделать новую функциональность и скомпилировать ее в Mosquitto? Есть ли пример, как это делается? - person Drasko DRASKOVIC; 06.09.2016
comment
Нет, написать отдельное приложение, которое подключается к брокеру и подписывается на # - person hardillb; 06.09.2016
comment
Node-RED не имеет вывода базы данных, только вывод файла, который будет хранить все сообщения в одном файле. Какими будут другие инструменты? И есть ли реальное преимущество использования инструмента по сравнению с простым написанием нескольких строк пользовательского кода (я знаю, что HiveMQ не согласен в своем блоге, но согласны ли вы с ними?) - person Tristan; 19.05.2017
comment
Node-RED имеет очень хороший узел mysql, просто его нет в базовом наборе, который предварительно установлен. И перетащить 2 узла на холст и добавить некоторые учетные данные намного проще, чем написать несколько строк кода для новичка. - person hardillb; 19.05.2017
comment
Хорошо, спасибо, я проверил. Но похоже, что это только для парней, не умеющих программировать, которые пытаются сделать действительно быстрый тест, но не для реального развертывания. По своей природе он допускает SQL-инъекцию. Напротив, HiveMQ, который вы цитируете, кажется, имеет более реальные аргументы против пользовательского кодирования в клиенте (hivemq.com/blog/mqtt-sql-database). Как вы думаете, это продажа их продукции или это обоснованный аргумент? - person Tristan; 20.05.2017