Goofing around with log consumers

although it would appear the logging exchange doesn't exist on all
vhosts (???)
This commit is contained in:
Dan Buch 2012-11-19 19:00:51 -05:00
parent 351a7dc5ba
commit 9e0e2ab567
2 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,4 @@
module Sylvilagus
module Ch03
end
end

View File

@ -0,0 +1,56 @@
require 'sylvilagus/init'
require 'sylvilagus/ch03'
require 'rabbitmq-client.jar'
import com.rabbitmq.client.ConnectionFactory
import com.rabbitmq.client.DefaultConsumer
import org.jruby.RubyString
class Sylvilagus::Ch03::LogListeners
class LogConsumer < DefaultConsumer
def handleDelivery(consumer_tag, envelope, properties, body)
body_string = RubyString.bytes_to_string(body)
puts "#{level}: #{body_string}"
channel.basic_ack(envelope.delivery_tag, false)
end
end
def main
factory = ConnectionFactory.new
factory.uri = ENV.fetch('SYLVILAGUS_AMQP_URI')
conn = factory.new_connection
trap :INT do
conn.close
exit 1
end
channel = conn.create_channel
errors_queue = channel.queue_declare.get_queue
warnings_queue = channel.queue_declare.get_queue
info_queue = channel.queue_declare.get_queue
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')
errors_consumer = LogConsumer.new(channel)
warnings_consumer = LogConsumer.new(channel)
info_consumer = LogConsumer.new(channel)
channel.basic_consume(errors_queue, false, errors_consumer)
channel.basic_consume(warnings_queue, false, warnings_consumer)
channel.basic_consume(info_queue, false, info_consumer)
loop do
sleep 1
end
ensure
conn.close
end
end
if $0 == __FILE__
Sylvilagus::Ch03::LogListeners.new.main
end