module Hat::Publisher

Public Class Methods

channel() click to toggle source
# File lib/hat/publisher.rb, line 21
def self.channel
  unless @connection
    @connection = Bunny.new
    @connection.start
  end
  @channel ||= @connection.create_channel
end
direct(queue, message, options={}) click to toggle source
# File lib/hat/publisher.rb, line 37
def self.direct(queue, message, options={})
  publish(:direct, (options.delete(:exchange) || config.publisher.default_direct_exchange), message, queue, options)
end
publish(type, exchange, message, queue=nil, options={}, exchange_options={}) click to toggle source
# File lib/hat/publisher.rb, line 29
def self.publish(type, exchange, message, queue=nil, options={}, exchange_options={})
  options.merge(routing_key: queue) if queue
  config.publisher.middlewares.each { |m| message = m.call(message) }
  channel.send(type, exchange, exchange_options.merge(config.exchange)).
    publish(message, options.merge(config.publisher.options))
  true
end
topic(queue, message, options={}) click to toggle source
# File lib/hat/publisher.rb, line 41
def self.topic(queue, message, options={})
  publish(:topic, (options.delete(:exchange) || config.publisher.default_topic_exchange), message, queue, options)
end