Amazon-SQS-Client
view release on metacpan or search on metacpan
bin/create-queue.pl view on Meta::CPAN
########################################################################
sub command_delete_message {
########################################################################
my ( $client, $options ) = @_;
die "--queue is a required argument\n"
if !$options->{queue};
my $queue_url = get_queue_url( $client, $options );
my $receipt_handle = shift @ARGV;
die "no receipt handle\n"
if !$receipt_handle;
$client->deleteMessage(
{ QueueUrl => $queue_url,
ReceiptHandle => $receipt_handle,
}
);
return 0;
}
########################################################################
sub command_list {
########################################################################
my ( $client, $options ) = @_;
my $queues = list_queues( $client, $options );
print {*STDOUT} JSON->new->pretty->encode($queues);
return 0;
}
########################################################################
sub command_attributes {
########################################################################
my ( $client, $options ) = @_;
die "--queue is a required argument\n"
if !$options->{queue};
my $queue_url = get_queue_url( $client, $options );
my $attributes = get_queue_attributes( $client, $queue_url );
print {*STDOUT} JSON->new->pretty->encode( { map { $_->getName, $_->getValue } @{$attributes} } );
return 0;
}
########################################################################
sub init_client {
########################################################################
my ($options) = @_;
my $client_options = {
ServiceURL => $options->{'endpoint-url'},
$options->{debug} ? ( loglevel => 'debug' ) : ( loglevel => 'info' ),
};
my @credentials = ( $ENV{AWS_ACCESS_KEY_ID}, $ENV{AWS_SECRET_ACCESS_KEY} );
return Amazon::SQS::Client->new( @credentials, $client_options );
}
########################################################################
sub main {
########################################################################
my @option_specs = qw(
debug|d
dlq!
delay-seconds|D=i
endpoint-url|e=s
help|h
max-receive-count|c=i
maximum-message-size|S=i
message-retention-period|p=i
queue|q=s
receive-message-wait-time-seconds|w=i
visibility-timeout|v=i
);
my %options = (
dlq => 1,
'delay-seconds' => $DEFAULT_DELAY_SECONDS,
'endpoint-url' => $DEFAULT_ENDPOINT_URL,
'max-receive-count' => $DEFAULT_MAX_RECEIVE_COUNT,
'endpoint-url' => $DEFAULT_ENDPOINT_URL,
'maximum-message-size' => $DEFAULT_MAXIMUM_MESSAGE_SIZE,
'message-retention-period' => $DEFAULT_MESSAGE_RETENTION_PERIOD,
'receive-message-wait-time-seconds' => $DEFAULT_RECEIVE_MESSAGE_WAIT_TIME_SECONDS,
);
my %dispatch = (
attributes => \&command_attributes,
create => \&command_create,
'send-message' => \&command_send_message,
'receive-message' => \&command_receive_message,
delete => \&command_delete,
'delete-message' => \&command_delete_message,
list => \&command_list,
);
my $retval = GetOptions( \%options, @option_specs );
if ( !$retval || $options{help} ) {
pod2usage(1);
}
my $client = init_client( \%options );
my $command = shift @ARGV;
$command //= q{};
if ( !$command || !$dispatch{$command} ) {
warn "invalid command [$command]\n"
if $command;
pod2usage(1);
}
return $dispatch{$command}->( $client, \%options );
}
exit main();
1;
## no critic
( run in 0.363 second using v1.01-cache-2.11-cpan-02777c243ea )