Class: Awful::SQS

Inherits:
Cli show all
Defined in:
lib/awful/sqs.rb

Instance Method Summary collapse

Methods inherited from Cli

#initialize

Constructor Details

This class inherits a constructor from Awful::Cli

Instance Method Details

#create(name) ⇒ Object



51
52
53
# File 'lib/awful/sqs.rb', line 51

def create(name)
  sqs.create_queue(queue_name: name).queue_url.tap(&method(:puts))
end

#delete(name) ⇒ Object



56
57
58
59
60
# File 'lib/awful/sqs.rb', line 56

def delete(name)
  if yes? "Really delete queue #{name}", :yellow
    sqs.delete_queue(queue_url: queue_url(name))
  end
end

#dump(*names) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/awful/sqs.rb', line 63

def dump(*names)
  names.map do |name|
    sqs.get_queue_attributes(queue_url: queue_url(name), attribute_names: %w[All]).attributes
  end.tap do |queues|
    queues.each do |queue|
      puts YAML.dump(stringify_keys(queue))
    end
  end
end

#ls(prefix = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/awful/sqs.rb', line 29

def ls(prefix = nil)
  queues = sqs.list_queues(queue_name_prefix: prefix).queue_urls
  attr = %w[QueueArn ApproximateNumberOfMessages ApproximateNumberOfMessagesNotVisible LastModifiedTimestamp]
  if options[:long]
    queues.map do |queue|
      sqs.get_queue_attributes(queue_url: queue, attribute_names: attr).attributes
    end.output do |list|
      print_table list.map { |q|
        [
          q['QueueArn'].split(':').last,
          q['ApproximateNumberOfMessages'],
          q['ApproximateNumberOfMessagesNotVisible'],
          Time.at(q['LastModifiedTimestamp'].to_i)
        ]
      }
    end
  else
    queues.map { |q| q.split('/').last }.output(&method(:puts))
  end
end

#purge(name) ⇒ Object



95
96
97
# File 'lib/awful/sqs.rb', line 95

def purge(name)
  sqs.purge_queue(queue_url: queue_url(name))
end

#receive(name) ⇒ Object



88
89
90
91
92
# File 'lib/awful/sqs.rb', line 88

def receive(name)
  sqs.receive_message(queue_url: queue_url(name), max_number_of_messages: options[:number]).messages.tap do |messages|
    puts messages.map(&:body)
  end
end

#send(name, message) ⇒ Object



74
75
76
# File 'lib/awful/sqs.rb', line 74

def send(name, message)
  sqs.send_message(queue_url: queue_url(name), message_body: message)
end

#send_batch(name, *messages) ⇒ Object



79
80
81
82
83
84
# File 'lib/awful/sqs.rb', line 79

def send_batch(name, *messages)
  entries = messages.map.with_index do |m, i|
    {id: i.to_s, message_body: m}
  end
  sqs.send_message_batch(queue_url: queue_url(name), entries: entries)
end