Sha256: a8904141e58a619924e4c6096b26e6a60823de11a1903ca12f3bbf4330f12a9a

Contents?: true

Size: 939 Bytes

Versions: 1

Compression:

Stored size: 939 Bytes

Contents

# frozen_string_literal: true

require 'aws-sdk-sqs'
require 'liam/common'
require 'liam/message_processor'
require 'pp'

module Liam
  class Consumer
    include Common

    def initialize(options: {})
      @options = options
    end

    def self.message(*args)
      new(*args).send(:execute)
    end

    private

    attr_reader :options

    def execute
      poller.poll(poller_options) do |messages|
        puts "INFO -- [aws-liam] : ** Received messages: #{messages.size} ** --"
        messages.each do |message|
          pp message
          MessageProcessor.process(message)
        end
      end
    end

    def poller
      Aws::SQS::QueuePoller.new(sqs_queue, client: Aws::SQS::Client.new(client_options))
    end

    def sqs_queue
      env_credentials.dig('aws', 'sqs', 'queue')
    end

    def poller_options
      { max_number_of_messages: options['max_message'] || options[:max_message] || 10 }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aws-liam-0.0.7 lib/liam/consumer.rb