class SimpleMessaging::MessageQueue::Rabbit

Attributes

channel[R]
name[R]
queue[R]

Public Class Methods

new(name) click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 9
def initialize(name)
  @@em_thread  ||= Thread.new { EventMachine.run }
  @@connection ||= AMQP.connect(rabbit_configs)
  @channel       = AMQP::Channel.new(@@connection)
  @exchange      = @channel.default_exchange
  @queue         = @channel.queue(queue_name(name))
  @name          = name
end

Public Instance Methods

delete() click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 37
def delete
  MessageQueue.unregister_queue(name)
  @queue.delete
end
enqueue(message) click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 18
def enqueue(message)
  @exchange.publish message,
    :routing_key => @queue.name,
    :app_id => app_id
end
poll() { |payload| ... } click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 24
def poll(&block)
  @queue.subscribe do |metadata, payload|
    yield payload
  end
end
pop() { |payload| ... } click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 30
def pop(&block)
  @queue.subscribe do |metadata, payload|
    yield payload
    break
  end
end

Private Instance Methods

app_id() click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 57
def app_id
  if defined? Rails
    Rails.application.class.parent.to_s
  else
    "unknown"
  end
end
queue_identifier() click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 44
def queue_identifier
  MessageQueue.environment
end
rabbit_configs() click to toggle source
# File lib/simple_messaging/message_queue/rabbit.rb, line 48
def rabbit_configs
  rabbit_config_file = Pathname.new(Dir.pwd).join('config', 'rabbit.yml').to_s
  if File.exist? rabbit_config_file
    YAML.load(File.open(rabbit_config_file).read)[MessageQueue.environment]
  else
    { host: "127.0.0.1" }
  end
end