Sha256: 6ad0171a7b1be3bc831140be196dd36b05024c2d7877df9157280f7a4caecdfb

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

module Lambdakiq
  class Queue

    attr_reader :queue_name,
                :queue_url

    def initialize(queue_name)
      @queue_name = queue_name
      @queue_url = get_queue_url
      attributes
    end

    def send_message(job, options = {})
      client.send_message send_message_params(job, options)
    end

    def attributes
      @attributes ||= client.get_queue_attributes({
        queue_url: queue_url,
        attribute_names: ['All']
      }).attributes
    end

    def redrive_policy
      @redrive_policy ||= JSON.parse(attributes['RedrivePolicy'])
    end

    def max_receive_count
      redrive_policy['maxReceiveCount'].to_i
    end

    def fifo?
      queue_name.ends_with?('.fifo')
    end

    private

    def client
      Lambdakiq.client.sqs
    end

    def get_queue_url
      client.get_queue_url(queue_name: queue_name).queue_url
    end

    def send_message_params(job, options)
      { queue_url: queue_url }.merge(message_params(job, options))
    end

    def message_params(job, options)
      Message.new(self, job, options).params
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lambdakiq-2.0.2 lib/lambdakiq/queue.rb
lambdakiq-2.0.1 lib/lambdakiq/queue.rb
lambdakiq-2.0.0 lib/lambdakiq/queue.rb
lambdakiq-1.0.4 lib/lambdakiq/queue.rb
lambdakiq-1.0.3 lib/lambdakiq/queue.rb
lambdakiq-1.0.2 lib/lambdakiq/queue.rb
lambdakiq-1.0.1 lib/lambdakiq/queue.rb