2

次のような amqp gem を使用して、RabbitMQ キューからのメッセージを消費する ruby​​ プロセスがあります。

require "bundler/setup"
require "amqp"
require 'eventmachine'
require 'em-http'


AMQP.start(:host => $AMQP_URL) do |connection|
  @channel ||= AMQP::Channel.new(connection)
  @queue   ||= @channel.queue("results")

  puts " [*] Waiting for messages. "

  @queue.subscribe do |body|    
    http = EventMachine::HttpRequest.new(URL).post :body => body          

    http.callback {
      # do something
    }        

    http.errback  { 
      $LOG.error "[errorback] -> #{http.error}"    
    }
  end
end

現在、URL は遅く、キューには非常に多くのメッセージ (> 30K) があり、ログに次のエラーが記録されています。

**[errorback] -> unable to create new socket: Too many open files** 

私はそれを解決する方法を考え出そうとずっと試みてきましたが、まったく結果が得られなかったので、どんな助けも高く評価されます.

前もって感謝します

4

1 に答える 1