Amazon-SQS-Client

 view release on metacpan or  search on metacpan

bin/create-queue.pl  view on Meta::CPAN

#!/usr/bin/env perl

# script to create a queue w/an associated dead letter queue
# perl create-queue.pl -h

use strict;
use warnings;

use Amazon::SQS::Client;

use Data::Dumper;
use English qw(-no_match_vars);

use Getopt::Long qw(:config no_ignore_case);
use JSON;
use Pod::Usage;

use Readonly;

Readonly::Scalar our $DEFAULT_MAX_RECEIVE_COUNT                 => 10;
Readonly::Scalar our $DEFAULT_MAXIMUM_MESSAGE_SIZE              => 256 * 1024;
Readonly::Scalar our $DEFAULT_VISIBILITY_TIMEOUT                => 30;
Readonly::Scalar our $DEFAULT_MESSAGE_RETENTION_PERIOD          => 4 * 24 * 60 * 60;
Readonly::Scalar our $DEFAULT_DELAY_SECONDS                     => 0;
Readonly::Scalar our $DEFAULT_RECEIVE_MESSAGE_WAIT_TIME_SECONDS => 0;
Readonly::Scalar our $DEFAULT_ENDPOINT_URL                      => 'https://queue.amazonaws.com';

########################################################################
sub list_queues {
########################################################################
  my ($client) = @_;

  my $queues = $client->listQueues()->getListQueuesResult->getQueueUrl;

  return $queues;
}

########################################################################
sub get_queue_names {
########################################################################
  my ( $client, $options ) = @_;

  my $queue_list = list_queues($client);

  return map { /([^\/]+)$/xsm ? ( "$1" => $_ ) : () } @{$queue_list};
}

########################################################################
sub get_queue_url {
########################################################################
  my ( $client, $options ) = @_;

  my %queue_names = get_queue_names( $client, $options );

  return $queue_names{ $options->{queue} };
}

########################################################################
sub get_queue_attributes {
########################################################################
  my ( $client, $queue_url ) = @_;

  my $rslt = $client->getQueueAttributes(
    { QueueUrl      => $queue_url,
      AttributeName => ['All'],
    }
  );

  my $attributesResult = $rslt->getGetQueueAttributesResult;

  return $attributesResult->getAttribute;



( run in 0.774 second using v1.01-cache-2.11-cpan-39bf76dae61 )