Я хочу подписаться на тему mqtt в приложении rails при запуске сервера и всегда поддерживать и запускать подписку.Rails и MQTT: Подписаться на тему в фоновом режиме при запуске сервера?
Я использую этот MQTT камень для MQTT общения: https://github.com/njh/ruby-mqtt
Вот что я прямо сейчас:
в application.rb: класс
config.after_initialize do
mqttSub = BackgroundMQTT.new
mqttSub.run
end
BackgroundMQTT:
class MQTTSubscriber
def run
Thread.new do
MQTT::Client.connect(:host => 'localhost', :port => 1883,) do |c|
c.get('#') do |topic,message|
puts "#{topic}: #{message}"
#Do things, access activerecord etc.
end
end
end
end
end
Так что в основном mqtt subscr iption начинается с метода after_initialize
и, насколько я знаю, не останавливается автоматически?
Также, как вы можете видеть, я запускаю подписку в Thread, иначе мое приложение rails перестало бы делать что-либо еще, кроме прослушивания подписки mqtt.
Это похоже на работу, по крайней мере, в течение первых нескольких минут.
Я не уверен, что это рекомендуемый способ делать то, что я хочу делать. Может ли это вызвать любые проблемы, которые я не рассматривал? Что было бы рекомендуемым способом сделать это?
Вы когда-нибудь делали какие-либо успехи или преуспевали в этом? – RonLugge
Одна из проблем заключается в том, что если у вас есть два или более сотрудника, вы будете подписаны дважды. – GorillaApe