Class: Toiler::Aws::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/toiler/aws/queue.rb

Overview

SQS Queue abstraction Provides methods for querying and acting on a SQS queue

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, client) ⇒ Queue

Returns a new instance of Queue.



12
13
14
15
16
# File 'lib/toiler/aws/queue.rb', line 12

def initialize(name, client)
  @name   = name
  @client = client
  @url    = client.get_queue_url(queue_name: name).queue_url
end

Instance Attribute Details

#clientObject

Returns the value of attribute client.



10
11
12
# File 'lib/toiler/aws/queue.rb', line 10

def client
  @client
end

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/toiler/aws/queue.rb', line 10

def name
  @name
end

#urlObject

Returns the value of attribute url.



10
11
12
# File 'lib/toiler/aws/queue.rb', line 10

def url
  @url
end

Instance Method Details

#ack_deadlineObject



18
19
20
21
22
23
# File 'lib/toiler/aws/queue.rb', line 18

def ack_deadline
  client.get_queue_attributes(
    queue_url: url,
    attribute_names: ['VisibilityTimeout']
  ).attributes['VisibilityTimeout'].to_i
end

#delete_messages(options) ⇒ Object



25
26
27
# File 'lib/toiler/aws/queue.rb', line 25

def delete_messages(options)
  client.delete_message_batch options.merge queue_url: url
end

#max_messagesObject



49
50
51
# File 'lib/toiler/aws/queue.rb', line 49

def max_messages
  10
end

#receive_messages(wait: nil, max_messages: nil) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/toiler/aws/queue.rb', line 39

def receive_messages(wait: nil, max_messages: nil)
  client.receive_message(attribute_names: %w[All],
                         message_attribute_names: %w[All],
                         wait_time_seconds: wait,
                         max_number_of_messages: max_messages,
                         queue_url: url)
        .messages
        .map { |m| Message.new(client, url, m) }
end

#send_message(options) ⇒ Object



29
30
31
# File 'lib/toiler/aws/queue.rb', line 29

def send_message(options)
  client.send_message sanitize_message_body options.merge queue_url: url
end

#send_messages(options) ⇒ Object



33
34
35
36
37
# File 'lib/toiler/aws/queue.rb', line 33

def send_messages(options)
  client.send_message_batch(
    sanitize_message_body(options.merge(queue_url: url))
  )
end