Sha256: fe00e50a9be4f971e1351370db6bf9ad1bb6ad22f5db2ac85dc0c8cffb93c4c2

Contents?: true

Size: 825 Bytes

Versions: 3

Compression:

Stored size: 825 Bytes

Contents

require "glass_octopus/context"

module GlassOctopus
  # @api private
  class Consumer
    attr_reader :connection, :processor, :logger

    def initialize(connection, processor,  logger)
      @connection = connection
      @processor  = processor
      @logger     = logger
    end

    def run
      connection.fetch_message do |message|
        process_message(message)
      end
    end

    def shutdown
      connection.close
    end

    # Unit of work. Builds a context for a message and runs it through the
    # middleware stack. It catches and logs all application level exceptions.
    def process_message(message)
      processor.call(Context.new(message, logger))
    rescue => ex
      logger.error("#{ex.class} - #{ex.message}:")
      logger.error(ex.backtrace.join("\n")) if ex.backtrace
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
glass_octopus-2.2.0 lib/glass_octopus/consumer.rb
glass_octopus-2.1.0 lib/glass_octopus/consumer.rb
glass_octopus-2.0.0 lib/glass_octopus/consumer.rb