Sha256: 1907ddb8b202ff9037bb02073669da674fc1bd2aa3adcde16c4844762e78e332

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

module Tochtli
  class RabbitClient

    attr_reader :rabbit_connection

    def initialize(rabbit_connection=nil, logger=nil)
      if rabbit_connection
        @rabbit_connection = rabbit_connection
      else
        @rabbit_connection = Tochtli::RabbitConnection.open(nil, logger: logger)
      end
      @logger = logger || @rabbit_connection.logger
    end

    def publish(message, options={})
      raise InvalidMessageError.new(message.errors.join(", "), message) if message.invalid?

      @logger.debug "[#{Time.now} AMQP] Publishing message #{message.id} to #{message.routing_key}"

      reply_queue        = @rabbit_connection.reply_queue
      options[:reply_to] = reply_queue.name
      if (message_handler = options[:handler])
        reply_queue.register_message_handler message, message_handler, options[:timeout]
      end
      @rabbit_connection.publish message.routing_key, message, options
    end

    def wait_for_confirms
      @rabbit_connection.channel.wait_for_confirms
    end

    def reply_queue(*args)
      rabbit_connection.reply_queue(*args)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tochtli-0.5.1 lib/tochtli/rabbit_client.rb
tochtli-0.5.0 lib/tochtli/rabbit_client.rb