2016-08-19 4 views
1

내가 Ubuntu14.04, 레일 (5)을, RabbitMQ (서버 3.6.5)를 사용하여 읽기, 버니 2.5.1RabbitMQ 시간 초과 : 오류 : IO 제한 시간 7 바이트

나는 servise에 토끼를 구현하고 테스트하는 시도 그것. 그것이 잘 작동

큐 등을 만드는 Mq::RabbitService 서비스 버니, 연결을 초기화 포함
def rabbit_test 
    s_time = Time.current 
    10_000.times do |n| 
    Mq::RabbitService.new('test_queue').publish(n.to_s) 
    end 
    p "###############################" 
    p "RabbirMQ Diff: #{Time.current - s_time}" 
    p "###############################" 
end 

그것이 내가

Mq::RabbitService.new('test_queue').subscribe 

를 실행하는 다른 터미널 시작을 위해 :

나는 다음 루비 스크립트를 작성 , 그러나 나는 단지 827 메시지만을 밀어 넣을 수있다. (왜 정확히 837인지는 모르지만, 항상 같은 숫자이다.)

[8] pry(main)> rabbit_test 
E, [2016-08-19T15:17:02.445820 #6409] ERROR -- #<Bunny::Session:0x6fb39858 [email protected]:5672, vhost=/, addresses=[192.168.1.67:5672]>: Got an exception when receiving data: IO timeout when reading 7 bytes (Timeout::Error) 
Timeout::Error: IO timeout when reading 7 bytes 
from /home/oleg/.rvm/gems/ruby-2.3.1/gems/bunny-2.5.1/lib/bunny/cruby/socket.rb:52:in `rescue in read_fully' 

는 또한 나는 시도했다 : 내 게시자 인상 오류 그 후

관리자 권한으로 새 사용자를 추가 동일한 결과 (192.168.0.11 같은) IP를 대신 localhost 주소를 추가했습니다.

편집

나는 Mq::RabbitService gist

하지만

이 가 가 가

이 작동하지 않는

def rabbit_test 
    s_time = Time.current 
    1_000.times do |n| 
    connection = Bunny.new(host: '192.168.1.67', port: 5672, user: 'oleg', password: '111111').start 
    channel = connection.create_channel 
    channel.queue('queue_name', auto_delete: true) 
    exchange = channel.default_exchange 
    exchange.publish(n.to_s, routing_key: 'queue_name') 
    channel.close 
    end 
    p "###############################" 
    p "RabbirMQ Diff: #{Time.current - s_time}" 
    p "###############################" 
end 
RabbitMQ 연결에 대한 내 서비스를 사용하여 너무

어쩌면 누군가가 내가 잘못 뭘 알아?

감사합니다.

+0

'Mq :: RabbitService'를 직접 만드셨습니까? 아니면 보석입니까? 수업이 자신의 수업 인 경우이 수업에 대한 요점을 연결해주십시오. – slowjack2k

+0

EDITED 표시 후 질문에서 확인할 수 있습니다 –

+1

루프 밖에서 연결을 이동할 수 있습니까? 문제와 관련이 있는지 확실하지 않지만 매번 새로운 연결을 만드는 이유는 무엇입니까? – theMayer

답변

2

각 루프마다 새 연결을 만들고 열어 둡니다. 채널을 닫는 것만이 두 가지입니다. 버니의 이전 버전에서는이 접근 방식에 문제가있었습니다. 모든 채널이 닫힌 후에 연결을 다시 사용하거나 닫아야합니다. 어쩌면 이것도 당신의 문제를 해결할 수 있습니다.

+0

**에서 편집 ** 게시 후 연결을 닫을 때 동일한 결과가 나타납니다 –

+3

연결을 닫지 마십시오. 채널을 닫습니다. 이것은 다른 것들입니다. – slowjack2k

+0

감사합니다 you'r right –