0

RabbitMQ キューを使用する Ruby プロセスがあります。

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

とにかく、手動で公開する場合は、前の例の「metadata」パラメーターで必要なすべての情報が得られます。

于 2013-02-12T11:48:21.973 に答える