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
: 다음은 비동기 HTTP-요청을 발행합니다 https://github.com/igrigorik/em-http-request/wiki/Parallel-Requests : 여기에 문서에 따르면
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
이 동적으로 새로운 변수를 생성 em-http-request 문서에 설명 된 것과 유사한 방식으로 새 http 요청을 만듭니다. 그러나 요청이 실제로 비동기식으로 만들어지고 있는지 여부를 테스트 할 수있는 방법이 있습니까? get 요청이 해고 될 때마다 콘솔에 쓸 수 있습니까? 응답을 기다리지 않고 차례대로 해고당하는 것을 볼 수 있습니까?