0

我有一个 ruby​​ 进程来消耗 RabbitMQ 队列:

AMQP.start(:host => $AMQP_URL) do |connection|
  @channel ||= AMQP::Channel.new(connection)
  @queue   ||= @channel.queue("results")

  @queue.subscribe do |body|
    puts "Received -> #{body}"       
    # Publish the same message again to the same queue 
  end
end

我知道这不切实际,但我很想知道我应该如何将相同的消息发布到同一个队列,直接通道对我来说不起作用,如果有的话,甚至只是为了保留消息队列而不是删除它或只是再次重新发布味精会很棒

有任何想法吗 ?

4

1 回答 1

1

正确的做法是拒绝带有否定确认的消息,它将自动重新排队:

@queue.subscribe do |metadata, payload|
  # reject and requeue
  channel.reject(metadata.delivery_tag, true)
end

无论如何,如果您想手动发布,前面示例中的“元数据”参数将为您提供所需的所有信息。

于 2013-02-12T11:48:21.973 回答