class Awful::SQS
Public Instance Methods
create(name)
click to toggle source
# File lib/awful/sqs.rb, line 49 def create(name) sqs.create_queue(queue_name: name).queue_url.tap(&method(:puts)) end
delete(name)
click to toggle source
# File lib/awful/sqs.rb, line 54 def delete(name) if yes? "Really delete queue #{name}", :yellow sqs.delete_queue(queue_url: queue_url(name)) end end
dump(*names)
click to toggle source
# File lib/awful/sqs.rb, line 61 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
is_url?(str)
click to toggle source
# File lib/awful/sqs.rb, line 14 def is_url?(str) str =~ /\A#{URI::regexp}\z/ end
ls(*names)
click to toggle source
# File lib/awful/sqs.rb, line 30 def ls(*names) if names.empty? queues = sqs.list_queues(queue_name_prefix: options[:prefix]).queue_urls else queues = names.map(&method(:queue_url)) end attr = %w[QueueArn ApproximateNumberOfMessages ApproximateNumberOfMessagesNotVisible LastModifiedTimestamp] if options[:long] queues.map {|q| sqs.get_queue_attributes(queue_url: q, attribute_names: attr).attributes}.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)
click to toggle source
# File lib/awful/sqs.rb, line 99 def purge(name) sqs.purge_queue(queue_url: queue_url(name)) end
queue_url(name)
click to toggle source
# File lib/awful/sqs.rb, line 18 def queue_url(name) if is_url?(name) name else sqs.get_queue_url(queue_name: name).queue_url end end
receive(name)
click to toggle source
# File lib/awful/sqs.rb, line 92 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)
click to toggle source
# File lib/awful/sqs.rb, line 74 def send(name, message) args = only_keys_matching(options, %w[message_group_id message_deduplication_id]).merge( queue_url: queue_url(name), message_body: message, ) sqs.send_message(args) end
send_batch(name, *messages)
click to toggle source
# File lib/awful/sqs.rb, line 83 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
sqs()
click to toggle source
# File lib/awful/sqs.rb, line 10 def sqs @_sqs ||= Aws::SQS::Client.new end