我收到RabbitMQ隊列的消息,並且每條消息都是我想要發出請求的URL。現在我使用AMQP gem來訂閱隊列並使用EventMachine,所以我使用em-http-request庫來創建http請求。根據該文件在這裏:當我訂閱的RabbitMQ隊列我有以下代碼如何使用EventMachine在ruby中測試異步HTTP請求
EventMachine.run {
http1 = EventMachine::HttpRequest.new('http://google.com/').get
http2 = EventMachine::HttpRequest.new('http://yahoo.com/').get
http1.callback { }
http2.callback { }
end
所以:https://github.com/igrigorik/em-http-request/wiki/Parallel-Requests 下會發出異步HTTP的請求
x = 0
EventMachine.run do
connection = AMQP.connect(:host => '127.0.0.1')
channel = AMQP::Channel.new(connection)
channel.prefetch(50)
queue = channel.queue("http.requests")
exchange = channel.direct("")
queue.subscribe do |metadata, payload|
url = payload.inspect
eval "
@http#{x} = EventMachine::HttpRequest.new(url).get
@http#{x}.callback do
puts \"got a response\"
puts @http#{x}.response
end
x = x+1
"
end
end
這種動態創建新變量並創建新的http請求,類似於em-http-request文檔中描述的方式。但有沒有辦法來測試這些請求是否實際上是異步進行的?每次發出獲取請求時,是否可以寫入控制檯,以便我可以看到它們一個接一個地被觸發,而不等待響應?