Adding the picture resizing consumer
This commit is contained in:
parent
b3f0f5c4ec
commit
10aa737d1d
@ -0,0 +1,63 @@
|
||||
require 'sylvilagus/init'
|
||||
require 'sylvilagus/ch04'
|
||||
require 'json'
|
||||
require 'rabbitmq-client.jar'
|
||||
|
||||
class Sylvilagus::Ch04::ResizePictureConsumer
|
||||
class Consumer < Java::ComRabbitmqClient::DefaultConsumer
|
||||
def handleDelivery(consumer_tag, envelope, properties, body)
|
||||
message = Java::OrgJruby::RubyString.bytes_to_string(body)
|
||||
|
||||
if message == 'quit'
|
||||
channel.basic_cancel(consumer_tag)
|
||||
@done = true
|
||||
return
|
||||
end
|
||||
|
||||
message_hash = JSON.parse(message)
|
||||
resize_picture(message_hash.fetch('image_id'),
|
||||
message_hash.fetch('image_path'))
|
||||
|
||||
channel.basic_ack(envelope.delivery_tag, false)
|
||||
rescue StandardError
|
||||
channel.basic_nack(envelope.delivery_tag, false)
|
||||
end
|
||||
|
||||
def resize_picture(image_id, image_path)
|
||||
puts "Resizing picture: #{image_id} #{image_path}"
|
||||
end
|
||||
|
||||
def done?
|
||||
!!@done
|
||||
end
|
||||
end
|
||||
|
||||
def main
|
||||
factory = Java::ComRabbitmqClient::ConnectionFactory.new
|
||||
factory.uri = ENV.fetch('SYLVILAGUS_AMQP_URI')
|
||||
@conn = factory.new_connection
|
||||
channel = @conn.create_channel
|
||||
channel.exchange_declare(
|
||||
'upload-pictures', 'fanout', false, true, false, nil
|
||||
)
|
||||
channel.queue_declare('resize-picture', false, true, false, nil)
|
||||
channel.queue_bind('resize-picture', 'upload-pictures', '')
|
||||
|
||||
consumer = Consumer.new(channel)
|
||||
puts "Consuming from 'upload-pictures' exchange"
|
||||
channel.basic_consume('resize-picture', false,
|
||||
"resize-picture-consumer-#{$$}-#{ENV['HOSTNAME']}",
|
||||
false, false, nil, consumer)
|
||||
loop do
|
||||
break if consumer.done?
|
||||
sleep 1
|
||||
end
|
||||
return 0
|
||||
ensure
|
||||
@conn.close if @conn
|
||||
end
|
||||
end
|
||||
|
||||
if $0 == __FILE__
|
||||
exit Sylvilagus::Ch04::ResizePictureConsumer.new.main
|
||||
end
|
Loading…
Reference in New Issue
Block a user