1

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 のコンテキストではそれは良い考えではないと思います。またはそれは?

4

1 に答える 1