class Soda::Queue

Constants

DEFAULTS
Message

Attributes

name[R]
options[R]
url[R]

Public Class Methods

new(name, url, options = {}) click to toggle source
# File lib/soda/queue.rb, line 52
def initialize(name, url, options = {})
  @name     = name
  @url      = url
  @options  = DEFAULTS.dup.merge(options)
end

Public Instance Methods

==(other) click to toggle source
# File lib/soda/queue.rb, line 100
def ==(other)
  other.name == name
end
lazy_url() click to toggle source

Lazily fetch queue URL if one is not provided as part of the queue configuration.

# File lib/soda/queue.rb, line 66
def lazy_url
  @lazy_url ||=
    url || begin
      resp = sqs.get_queue_url(queue_name: name)
      resp.queue_url
    end
end
pop() click to toggle source
# File lib/soda/queue.rb, line 84
def pop
  resp = sqs.receive_message(
    queue_url:               lazy_url,
    attribute_names:         %w[All],
    message_attribute_names: %w[All],
    wait_time_seconds:       wait,
    visibility_timeout:      timeout,
  )

  Enumerator.new do |yielder|
    resp.messages.each do |msg|
      yielder.yield(Message.new(self, msg))
    end
  end
end
push_in(interval, str) click to toggle source
# File lib/soda/queue.rb, line 74
def push_in(interval, str)
  sqs do |client|
    client.send_message(
      queue_url:      lazy_url,
      message_body:   str,
      delay_seconds:  interval,
    )
  end
end