从rabbitmq队列中获取一条消息并取消订阅

时间:2014-02-14 10:33:17

标签: ruby rabbitmq bunny

我正在使用RabbitMq进行通信,我只想使用一条消息并取消订阅。怎么做红宝石兔子?我的订阅块非常简单:

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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