diff --git a/sylvilagus/jruby/lib/sylvilagus/ch03/log_listeners.rb b/sylvilagus/jruby/lib/sylvilagus/ch03/log_listeners.rb index 149df97..9501f97 100644 --- a/sylvilagus/jruby/lib/sylvilagus/ch03/log_listeners.rb +++ b/sylvilagus/jruby/lib/sylvilagus/ch03/log_listeners.rb @@ -17,20 +17,29 @@ class Sylvilagus::Ch03::LogListeners def main factory = ConnectionFactory.new - factory.uri = ENV.fetch('SYLVILAGUS_AMQP_URI') - conn = factory.new_connection + amqp_uri = ENV.fetch('SYLVILAGUS_ROOT_ADMIN_AMQP_URI') + factory.uri = amqp_uri + puts "Getting connection for #{amqp_uri.inspect}..." + @conn = factory.new_connection trap :INT do - conn.close - exit 1 + begin + @conn.close + exit 1 + rescue NativeException + exit 2 + end end - channel = conn.create_channel + puts 'Getting channel...' + channel = @conn.create_channel + puts 'Declaring queues...' errors_queue = channel.queue_declare.get_queue warnings_queue = channel.queue_declare.get_queue info_queue = channel.queue_declare.get_queue + puts "Binding queues to 'amq.rabbitmq.log' exchange..." channel.queue_bind(errors_queue, 'amq.rabbitmq.log', 'error') channel.queue_bind(warnings_queue, 'amq.rabbitmq.log', 'warning') channel.queue_bind(info_queue, 'amq.rabbitmq.log', 'info') @@ -39,6 +48,7 @@ class Sylvilagus::Ch03::LogListeners warnings_consumer = LogConsumer.new(channel) info_consumer = LogConsumer.new(channel) + puts 'Setting up consumers...' channel.basic_consume(errors_queue, false, errors_consumer) channel.basic_consume(warnings_queue, false, warnings_consumer) channel.basic_consume(info_queue, false, info_consumer) @@ -47,7 +57,10 @@ class Sylvilagus::Ch03::LogListeners sleep 1 end ensure - conn.close + begin + @conn.close if @conn + rescue NativeException + end end end