我想在服务器启动时在我的rails应用程序中订阅mqtt主题,并保持订阅始终处于活动状态并正在运行。Rails和MQTT:在服务器启动时在后台订阅主题?
我使用MQTT通信这个MQTT宝石: https://github.com/njh/ruby-mqtt
这是我现在所拥有的:
config.after_initialize do
mqttSub = BackgroundMQTT.new
mqttSub.run
end
BackgroundMQTT类:
在application.rb中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
方法开始,据我所知,不会自动停止?
另外正如你所看到的,我正在线程中运行订阅,否则我的rails应用程序将停止做其他任何事情比听mqtt订阅。
这似乎至少在前几分钟工作。
我不确定这是否是推荐的做我想做的事。这是否会导致我没有考虑过的任何问题?什么会是这样做的推荐方式?
你有没有取得任何进展或成功呢? – RonLugge
一个问题是,如果你有两个或两个以上的工人,你将被订阅两次 – GorillaApe