Module: MessageQueue::Producible

Includes:
Logging
Defined in:
lib/message_queue/producible.rb

Overview

A module to mix in a producer class, for example:

class Producer

include MessageQueue::Producible

exchange :name => "time", :type => :topic
message :routing_key => "time.now", :mandatory => true

end

Producer.new.publish(Time.now.to_s)

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logging

#logger, logger, logger=, setup_logger

Class Method Details

.included(base) ⇒ Object



17
18
19
# File 'lib/message_queue/producible.rb', line 17

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#initializeObject



39
40
41
# File 'lib/message_queue/producible.rb', line 39

def initialize
  @producer = MessageQueue.new_producer(:exchange => self.class.exchange_options, :message => self.class.message_options)
end

#publish(object, options = {}) ⇒ Object



43
44
45
46
47
# File 'lib/message_queue/producible.rb', line 43

def publish(object, options = {})
  logger.info "Publishing #{object.inspect} with options #{options.inspect}"

  @producer.publish(object, options)
end