Нужно ли запускать Mosquitto для взаимодействия с удаленным брокером Mosquitto?
Я новичок в mqtt и хотел бы кое-что обдумать.
Мне нужно получать сообщения от (подписаться) на темы с удаленного mosquitto
маклер. Документация для службы говорит, что мне нужно запустить mosquitto
брокер на моем сервере.
Если я правильно понимаю, то скрипт, который использует mqtt
gem и удается соединиться, используя что-то вроде этого:
MQTT::Client.connect(conn_opts) do |c|
# The block will be called when you messages arrive to the topic
c.get('test') do |topic, message|
puts "#{topic}: #{message}"
end
end
Брокер? Нужно ли запускать москит на моей машине, или я могу сойти с рук только с помощью сценария и mqtt
?
Документ описывает архитектуру и включает в себя следующие строки:
Сторонней платформе требуется установленный брокер MQTT, который позволит осуществлять связь с различными блоками на наших серверах. Брокер на наших серверах инициирует соединение и предоставляет учетные данные, чтобы разрешить двунаправленную связь.
Архитектура, которую я имею в виду, является запланированным фоновым процессом, использующим ruby-mqtt
, появится, соединиться с пультом mosquitto
сервер и вытащить новые сообщения в пакетном режиме до окончания. Похоже ли это на разумный подход для получения сообщений от удаленного mosquitto
маклер?
У меня есть подлое подозрение, что я чего-то не получаю... любая помощь / направление будут оценены. Спасибо!
1 ответ
Нет, вам не нужен локальный MQTT-сервер, вы можете напрямую подключиться к удаленному серверу из вашего скрипта ruby.
Обычно клиент MQTT постоянно работает, а не просто периодически загружается с помощью cron. Хотя я полагаю, что это может сработать, если вы используете QoS 1/2 и отключите чистые сеансы, чтобы сообщения оставались на удаленном сервере. Несмотря на свое название, MQTT не является протоколом очереди сообщений, это протокол публикации / подписки, поэтому возможно, что на удаленном сервере вам не удастся создать большой пул сообщений.
Однако может быть желательно иметь локальный сервер MQTT (например, mosquitto): * Ваш локальный сервер MQTT может иметь дело с хранением сообщений на диске до тех пор, пока для них не будет готов рубин * Он позволяет нескольким локальным клиентам получать одно и то же сообщение без удаленного сервер должен отправить его по сети несколько раз * Несколько локальных клиентов могут отправлять сообщения друг другу, даже если удаленная сеть не работает
Также имейте в виду, что ruby-mqtt еще не поддерживает QoS 1 должным образом, а также не поддерживает сохранение сообщений или автоматическое переподключение, поэтому локальный экземпляр москита может решить некоторые из этих проблем за вас.