Ich möchte ein mqtt-Thema in meiner Rails-App abonnieren, wenn der Server startet und das Abonnement immer aktiv und aktiv hält.Rails und MQTT: Thema im Hintergrund beim Serverstart abonnieren?
Ich verwende dieses MQTT Juwel für MQTT Kommunikation: https://github.com/njh/ruby-mqtt
Hier ist, was ich jetzt haben:
in application.rb:
config.after_initialize do
mqttSub = BackgroundMQTT.new
mqttSub.run
end
BackgroundMQTT Klasse:
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
Also im Grunde die mqtt subscr перед составший на к after_initialize
Methode und so weit ich weiß, stoppt nicht automatisch?
Auch Wie Sie sehen können, führe ich das Abonnement in einem Thread, sonst würde meine Rails-Anwendung aufhören, etwas anderes als das mqtt Abonnement zu hören.
Dies scheint zumindest für die ersten paar Minuten zu funktionieren.
Ich bin mir nicht sicher, ob dies eine empfohlene Art zu tun ist, was ich tun möchte. Könnte dies zu Problemen führen, die ich nicht berücksichtigt habe? Was wäre ein empfehlender Weg dies zu tun?
Haben Sie jemals Fortschritte gemacht oder sind dabei erfolgreich? – RonLugge
Ein Problem ist, dass wenn Sie zwei oder mehr Arbeiter haben, werden Sie zweimal abonniert – GorillaApe