サーバが起動したときに、自分のレールアプリでmqttトピックを購読して、定期購読を常に有効にして実行しておきたい。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サブスクライバiptionはafter_initialize
メソッドで開始され、わかっている限り、自動的に停止しませんか?
また、私はスレッドでサブスクリプションを実行しています。そうでないと、私のレールアプリケーションはmqttサブスクリプションを聞く以外のことをやめることになります。
これは少なくとも最初の数分間はうまくいくようです。
これが私がやりたいことをするのが推奨される方法であるかどうかはわかりません。これは、私が考慮していない問題を引き起こす可能性がありますか?これを行うための推奨方法は何でしょうか?
これで進歩を遂げたのか成功したのですか? – RonLugge
2つ以上のワーカーがいる場合は、2回購読されます – GorillaApe