Last active
May 13, 2021 12:27
-
-
Save activefx/89d71dd7a3ebd3ecffb2 to your computer and use it in GitHub Desktop.
Revisions
-
activefx revised this gist
Apr 20, 2015 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -47,7 +47,7 @@ namespace :queues do end end desc "Setup the default SQS queues for a new project" task :setup, [:retries] => :environment do |t, args| unless name = ENV['SQS_DEFAULT_QUEUE'] fail 'SQS_DEFAULT_QUEUE env variable is not set' -
activefx revised this gist
Apr 20, 2015 . 1 changed file with 5 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -36,7 +36,7 @@ namespace :queues do if queue_names.include?(name) puts "SQS Queue '#{name}' exists" else Rake::Task['queues:dead_letter_queue'].invoke retries = args.retries || 7 arn = queue(ENV['SQS_FAILURE_QUEUE'])['QueueArn'] attrs = { 'RedrivePolicy' => @@ -53,7 +53,7 @@ namespace :queues do fail 'SQS_DEFAULT_QUEUE env variable is not set' end retries = args.retries || 7 Rake::Task['queues:create'].invoke(name, retries) end desc "Delete an SQS queue" @@ -67,13 +67,13 @@ namespace :queues do desc "Delete all SQS queues" task :delete_all => :environment do STDOUT.puts "Are sure you want to delete all SQS Queues? Type 'CONFIRM' to confirm:" input = STDIN.gets.chomp unless input == 'CONFIRM' fail "Aborting deletion of SQS Queues. You entered: #{input}" end queues.each do |queue| Rake::Task['queues:delete'].invoke(queue) end end -
activefx created this gist
Apr 20, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,106 @@ # See https://github.com/phstc/shoryuken/wiki/Creating-a-queue namespace :queues do desc "List all SQS queues" task :list => :environment do queues.each { |queue_url| puts queue_url } end desc "Get details for a specific SQS Queue" task :queue, [:identifier] => :environment do |t, args| unless identifier = args.identifier fail 'No SQS queue name or url was specified' end puts queue(identifier) end desc "Ensure existence of a SQS Dead Letter Queue" task :dead_letter_queue => :environment do unless name = ENV['SQS_FAILURE_QUEUE'] fail 'SQS_FAILURE_QUEUE env variable is not set' end if queue_names.include?(name) puts "SQS Dead Letter Queue '#{name}' exists" else sqs.create_queue(queue_name: name) puts "SQS Dead Letter Queue '#{name}' created" end end desc "Create a new SQS queue with dead job support" task :create, [:name, :retries] => :dead_letter_queue do |t, args| unless name = args.name fail "An SQS queue name must be specified" end if queue_names.include?(name) puts "SQS Queue '#{name}' exists" else Rake::Task['yanagi:queues:dead_letter_queue'].invoke retries = args.retries || 7 arn = queue(ENV['SQS_FAILURE_QUEUE'])['QueueArn'] attrs = { 'RedrivePolicy' => %Q{{"maxReceiveCount":"#{retries}", "deadLetterTargetArn":"#{arn}"}"} } sqs.create_queue(queue_name: name, attributes: attrs) puts "SQS Queue '#{name}' created" end end desc "Setup the default SQS queues for a new Yanagi project" task :setup, [:retries] => :environment do |t, args| unless name = ENV['SQS_DEFAULT_QUEUE'] fail 'SQS_DEFAULT_QUEUE env variable is not set' end retries = args.retries || 7 Rake::Task['yanagi:queues:create'].invoke(name, retries) end desc "Delete an SQS queue" task :delete, [:identifier] => :environment do unless identifier = args.identifier fail 'No SQS queue name or url was specified' end sqs.delete_queue(queue_url: queue_url(identifier), attributes: attrs) puts "SQS Queue '#{name}' deleted" end desc "Delete all SQS queues" task :delete_all => :environment do STDOUT.puts "Are sure you want to delete all SQS Queues? Type 'Yanagi' to confirm:" input = STDIN.gets.chomp unless input == 'Yanagi' fail "Aborting deletion of SQS Queues. You entered: #{input}" end queues.each do |queue| Rake::Task['yanagi:queues:delete'].invoke(queue) end end def sqs @sqs ||= Aws::SQS::Client.new end def queues sqs.list_queues.inject([]) do |list, page| list.concat(page.queue_urls) end end def queue_names queues.map { |queue| queue.rpartition('/').last } end def queue_url(identifier) if /^https?:\/\//.match(identifier) identifier else queues.find { |queue| queue.rpartition('/').last == identifier } end end def queue(identifier) sqs.get_queue_attributes(queue_url: queue_url(identifier), attribute_names: ['All']).attributes end end