【发布时间】:2016-08-29 11:41:28
【问题描述】:
我想在服务器启动时订阅我的 Rails 应用程序中的 mqtt 主题,并保持订阅始终处于活动状态和运行状态。
我正在使用这个 mqtt gem 进行 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 订阅以after_initialize 方法开始,据我所知,不会自动停止?
此外,正如您所见,我正在线程中运行订阅,否则我的 rails 应用程序将停止执行任何其他操作,而不是监听 mqtt 订阅。
这似乎至少在前几分钟有效。
我不确定这是否是推荐的方式来做我想做的事情。这会导致我没有考虑过的任何问题吗?这样做的推荐方法是什么?
【问题讨论】:
-
您在这方面有没有取得任何进展或成功?
-
一个问题是,如果你有两个或更多的工人,你将被订阅两次
标签: ruby-on-rails ruby ruby-on-rails-3 backgroundworker mqtt