26 lines
680 B
Ruby
26 lines
680 B
Ruby
#!/usr/bin/env ruby
|
|
require 'bunny'
|
|
|
|
connection = Bunny.new(automatically_recover: false)
|
|
connection.start
|
|
|
|
channel = connection.create_channel
|
|
queue = channel.queue('task_queue', durable: true)
|
|
|
|
channel.prefetch(1)
|
|
puts ' [*] Waiting for messages. To exit press CTRL+C'
|
|
|
|
begin
|
|
# block: true is only used to keep the main thread
|
|
# alive. Please avoid using it in real world applications.
|
|
queue.subscribe(manual_ack: true, block: true) do |delivery_info, _properties, body|
|
|
puts " [x] Received '#{body}'"
|
|
# imitate some work
|
|
sleep body.count('.')
|
|
puts ' [x] Done'
|
|
channel.ack(delivery_info.delivery_tag)
|
|
end
|
|
rescue Interrupt => _
|
|
connection.close
|
|
end
|