次のような 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**
私はそれを解決する方法を考え出そうとずっと試みてきましたが、まったく結果が得られなかったので、どんな助けも高く評価されます.
前もって感謝します