Amazon-SQS-Client
view release on metacpan or search on metacpan
lib/Amazon/SQS/QueueHandler.pm view on Meta::CPAN
use English qw(-no_match_vars);
use Amazon::Credentials;
use Amazon::SQS::Model::DeleteMessageRequest;
use Amazon::SQS::Model::ReceiveMessageRequest;
use Amazon::SQS::Client;
use CGI::Simple;
use JSON;
use List::Util qw(none max);
__PACKAGE__->follow_best_practice;
__PACKAGE__->mk_accessors(
qw(
config
create_queue
credentials
endpoint_url
logger
max_error_retry
message
message_id
message_type
message_body
raw_message
receipt_handle
request
region
service
signature_version
queue_list
name
max_messages
url
visibility_timeout
wait_time
)
);
use parent qw(Class::Accessor::Fast);
our @VALID_MESSAGE_TYPES = qw(
text/plain
application/json
application/x-www-form-urlencoded
);
our $DEFAULT_ENDPOINT_URL = 'https://queue.amazonaws.com';
our $MAX_MESSAGES = 1;
our $TRUE = 1;
our $FALSE = 0;
########################################################################
sub new {
########################################################################
my ( $class, @args ) = @_;
my $options = ref $args[0] ? $args[0] : {@args};
$options->{credentials} //= Amazon::Credentials->new;
my $self = $class->SUPER::new($options);
$self->init_defaults();
$self->create_service();
if ( $self->get_name && !$self->get_url ) {
my %queue_list = reverse $self->list_queues();
if ( $self->get_create_queue ) {
$self->create_queue( $self->get_name );
}
else {
my $queue_url = $queue_list{ $self->get_name };
die sprintf "no such queue [%s]\n", $self->get_name
if !$queue_url;
$self->set_url($queue_url);
}
}
die "no queue url set\n"
if !$self->get_url;
$self->create_request;
return $self;
}
########################################################################
sub init_defaults {
########################################################################
my ($self) = @_;
my $config = $self->get_config;
# init options from config...
if ($config) {
foreach (
qw(
handler_message_type
aws_endpoint_url
queue_max_error_retry
queue_max_messages
queue_url
queue_name
queue_create_queue
queue_visibility_timeout
queue_wait_time
)
) {
my $getter = "get_$_";
if ( $config->can($getter) ) {
my @local_name = split /_/xsm, $_;
shift @local_name;
my $var = join q{_}, @local_name;
( run in 0.552 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )