subscribe に :ack => true を指定する必要がある。デフォルトは false で、勝手に ack を返す。
require 'amqp'
EventMachine.run do
connection = AMQP.connect(:host => 'example.jp')
channel = AMQP::Channel.new(connection)
q = channel.queue("test")
q.subscribe(:ack => true) do |hdr, payload|
puts "Received a message: #{payload}"
email.callback do
puts 'email sent'
end
email.errback do |e|
puts 'email failed'
end
end
end