class StatsdServer::Output::Amqp
Attributes
logger[RW]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/statsdserver/output/amqp.rb, line 8 def initialize(opts = {}) begin require "bunny" rescue LoadError => e raise unless e.message =~ /bunny/ new_e = e.exception("Please install the bunny gem for AMQP output.") new_e.set_backtrace(e.backtrace) raise new_e end if opts["exchange_type"].nil? raise ArgumentError, "missing host in [output:amqp] config section" end if opts["exchange_name"].nil? raise ArgumentError, "missing port in [output:amqp] config section" end @opts = opts @logger = Logger.new(STDOUT) end
Public Instance Methods
send(str)
click to toggle source
# File lib/statsdserver/output/amqp.rb, line 31 def send(str) if @bunny.nil? @bunny, @exchange = connect end begin @exchange.publish(str) rescue => e @bunny.close_connection rescue nil @bunny = nil raise end end
Private Instance Methods
connect()
click to toggle source
# File lib/statsdserver/output/amqp.rb, line 46 def connect opts_sym = Hash[@opts.map { |k,v| [k.to_sym,v] }] bunny = Bunny.new(opts_sym) bunny.start exchange = bunny.exchange( @opts["exchange_name"], :type => @opts["exchange_type"].to_sym, :durable => @opts["exchange_durable"] == "true" ? true : false, :auto_delete => @opts["exchange_auto_delete"] == "true" ? true : false ) return bunny, exchange end