2014-02-14 3 views
1

나는 RabbitMq를 사용하여 통신하고 있으므로 메시지 하나만 수신하고 구독을 취소하고 싶습니다. 루비 버거에서 어떻게? 내 구독 블록은 매우 간단합니다 :rabbitmq 큐에서 하나의 메시지 만 받고 수신 거부

아마
queue.subscribe(block: true) do |delivery_info, properties, payload| 
    puts "[consumer] #{q.name} received a message: #{payload}" 
    end 

답변

1

이미 지금 그것을 생각하지만, documentation에 따르면 다른 사람 ...

을 위해, 당신은 단지 basic_get를 사용할 수 있습니다. 예를 들어,

conn = Bunny.new 
conn.start 
ch = conn.create_channel 
delivery_info, properties, message = ch.basic_get("your_queue_name", :ack => true) 
ch.acknowledge(delivery_info.delivery_tag) 
0

다른 방법은 대기열 #pop 방법을 사용할 수있다.

conn = Bunny.new 
conn.start 

ch = conn.create_channel 
q = ch.queue("queue_name") 
delivery_info, properties, payload = q.pop 

You can find more details about it here

관련 문제