class Rabbitmq::Sender
Constants
- VERSION
Public Class Methods
new()
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 12 def initialize @state = :not_connected end
send_to(queue, msg, reply_queue = nil)
click to toggle source
# File lib/rabbitmq/sender.rb, line 16 def self.send_to(queue, msg, reply_queue = nil) Rabbitmq::Sender.config.connection ||= ConnectionPool::Wrapper.new(:size => Rabbitmq::Sender.config.pool, :timeout => Rabbitmq::Sender.config.timeout) { Rabbitmq::Sender.send(:new) } Rabbitmq::Sender.config.connection.send_to(queue, msg, reply_queue) end
Public Instance Methods
_connect()
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 20 def _connect @state = :not_connected options = {host: Rabbitmq::Sender.config.host, port: Rabbitmq::Sender.config.port} options = options.merge(user: Rabbitmq::Sender.config.user) if Rabbitmq::Sender.config.user options = options.merge(password: Rabbitmq::Sender.config.password) if Rabbitmq::Sender.config.password options = options.merge(vhost: Rabbitmq::Sender.config.vhost) if Rabbitmq::Sender.config.vhost begin @rmq_connection = Bunny.new(options) @rmq_connection.start @rmq_channel = @rmq_connection.create_channel @rmq_channel.prefetch(Rabbitmq::Sender.config.prefetch) @state = :connected Rabbitmq::Sender.config.logger.info "------- Rabbit::Sender on #{self.server_info} connected.".white if Rabbitmq::Sender.config.verbose rescue Exception => e Rabbitmq::Sender.config.logger.error e if Rabbitmq::Sender.config.verbose Rabbitmq::Sender.config.logger.error "------- Rabbit::Sender on #{self.server_info} can't connect.".red if Rabbitmq::Sender.config.verbose @state = :not_connected exit(1) end end
_disconnect()
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 55 def _disconnect @rmq_channel.close if @rmq_channel @rmq_connection.close if @rmq_connection Rabbitmq::Sender.config.logger.info "------- Rabbit::Sender on #{self.server_info} disconnected.".white if Rabbitmq::Sender.config.verbose end
_do_connection()
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 61 def _do_connection if @state != :connected tries = Rabbitmq::Sender.config.retry_time begin self._connect rescue Exception => e Rabbitmq::Sender.config.logger.error "------- Rabbit::Sender on #{self.server_info} retrying... (##{Rabbitmq::Sender.config.retry_time - tries})".white if Rabbitmq::Sender.config.verbose if (tries -= 1).zero? == false sleep 1 retry else raise end end end end
connection()
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 43 def connection self._do_connection if @state == :connected return @rmq_connection end nil end
send_to(queue, msg, reply_queue = nil)
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 78 def send_to(queue, msg, reply_queue = nil) self._do_connection if @state == :connected @rmq_queue = @rmq_channel.queue(queue, durable: Rabbitmq::Sender.config.durable, exlusive: false, auto_delete: Rabbitmq::Sender.config.auto_delete) @rmq_channel.default_exchange.publish(msg, routing_key: @rmq_queue.name, reply_to: reply_queue) end end
server_info()
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 16 def server_info "#{Rabbitmq::Sender.config.host}:#{Rabbitmq::Sender.config.port}" end
state=(_state)
click to toggle source
# File lib/rabbitmq/sender/sender.rb, line 51 def state= _state @state = _state end