UDP パケットをリッスンしている EventMachine を実行しています。UDP パケットを受信するたびに、REST 呼び出しを使用してデータをデータベースに転送したいと考えています。receive_data
メソッドが REST 呼び出しを介してデータを転送する EM::Connection サブクラスを作成しました。
データの頻度は非常に高いため、リクエスト間の接続を再利用し (「キープアライブ」を使用)、可能であればパイプラインも使用したいと考えています。異なる通話間で接続を共有するにはどうすればよいでしょうか?
現在、私の UDPHandler は次のようになっています。
module Udp
module Collector
class UDPHandler < EM::Connection
def receive_data(data)
http = EventMachine::HttpRequest.new('http://databaseurl.com/').post body: data
end
end
end
end
このクラスは次のように呼び出されます。
EM.run do
EM.open_datagram_socket('0.0.0.0', 9000, Udp::Collector::UDPHandler)
end
request オブジェクトをクラス変数にすることも考えましたが、eventmachines のコンテキストではそれは良い考えではないと思います。またはそれは?