| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Amazon::SQS::Simple::Queue; |
|
2
|
|
|
|
|
|
|
|
|
3
|
2
|
|
|
2
|
|
11
|
use strict; |
|
|
2
|
|
|
|
|
3
|
|
|
|
2
|
|
|
|
|
60
|
|
|
4
|
2
|
|
|
2
|
|
11
|
use warnings; |
|
|
2
|
|
|
|
|
4
|
|
|
|
2
|
|
|
|
|
72
|
|
|
5
|
2
|
|
|
2
|
|
851
|
use Amazon::SQS::Simple::Message; |
|
|
2
|
|
|
|
|
4
|
|
|
|
2
|
|
|
|
|
60
|
|
|
6
|
2
|
|
|
2
|
|
857
|
use Amazon::SQS::Simple::SendResponse; |
|
|
2
|
|
|
|
|
5
|
|
|
|
2
|
|
|
|
|
77
|
|
|
7
|
2
|
|
|
2
|
|
27
|
use Carp qw( croak carp ); |
|
|
2
|
|
|
|
|
3
|
|
|
|
2
|
|
|
|
|
139
|
|
|
8
|
|
|
|
|
|
|
|
|
9
|
2
|
|
|
2
|
|
11
|
use base 'Amazon::SQS::Simple::Base'; |
|
|
2
|
|
|
|
|
2
|
|
|
|
2
|
|
|
|
|
164
|
|
|
10
|
2
|
|
|
2
|
|
9
|
use Amazon::SQS::Simple::Base; # for constants |
|
|
2
|
|
|
|
|
3
|
|
|
|
2
|
|
|
|
|
102
|
|
|
11
|
|
|
|
|
|
|
|
|
12
|
2
|
|
|
2
|
|
10
|
use overload '""' => \&_to_string; |
|
|
2
|
|
|
|
|
4
|
|
|
|
2
|
|
|
|
|
20
|
|
|
13
|
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
sub Endpoint { |
|
15
|
0
|
|
|
0
|
1
|
|
my $self = shift; |
|
16
|
0
|
|
|
|
|
|
return $self->{Endpoint}; |
|
17
|
|
|
|
|
|
|
} |
|
18
|
|
|
|
|
|
|
|
|
19
|
|
|
|
|
|
|
sub Delete { |
|
20
|
0
|
|
|
0
|
1
|
|
my $self = shift; |
|
21
|
0
|
|
|
|
|
|
my $params = { Action => 'DeleteQueue' }; |
|
22
|
|
|
|
|
|
|
|
|
23
|
0
|
|
|
|
|
|
my $href = $self->_dispatch($params); |
|
24
|
|
|
|
|
|
|
} |
|
25
|
|
|
|
|
|
|
|
|
26
|
|
|
|
|
|
|
sub Purge { |
|
27
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
28
|
0
|
|
|
|
|
|
my $params = { Action => 'PurgeQueue' }; |
|
29
|
|
|
|
|
|
|
|
|
30
|
0
|
|
|
|
|
|
my $href = $self->_dispatch($params); |
|
31
|
|
|
|
|
|
|
} |
|
32
|
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
sub SendMessage { |
|
34
|
0
|
|
|
0
|
1
|
|
my ($self, $message, %params) = @_; |
|
35
|
|
|
|
|
|
|
|
|
36
|
0
|
|
|
|
|
|
$params{Action} = 'SendMessage'; |
|
37
|
0
|
|
|
|
|
|
$params{MessageBody} = $message; |
|
38
|
|
|
|
|
|
|
|
|
39
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params); |
|
40
|
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
# default to most recent version |
|
42
|
|
|
|
|
|
|
return new Amazon::SQS::Simple::SendResponse( |
|
43
|
0
|
|
|
|
|
|
$href->{SendMessageResult}, $message |
|
44
|
|
|
|
|
|
|
); |
|
45
|
|
|
|
|
|
|
} |
|
46
|
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
sub SendMessageBatch { |
|
48
|
0
|
|
|
0
|
1
|
|
my ($self, $messages, %params) = @_; |
|
49
|
|
|
|
|
|
|
|
|
50
|
0
|
|
|
|
|
|
$params{Action} = 'SendMessageBatch'; |
|
51
|
|
|
|
|
|
|
|
|
52
|
0
|
0
|
|
|
|
|
if (ref($messages) eq 'ARRAY'){ |
|
53
|
0
|
|
|
|
|
|
my %messages; |
|
54
|
0
|
|
|
|
|
|
my @IDs = map { "msg_$_" } (1..scalar(@$messages)); |
|
|
0
|
|
|
|
|
|
|
|
55
|
0
|
|
|
|
|
|
@messages{@IDs} = @$messages; |
|
56
|
0
|
|
|
|
|
|
$messages = \%messages; |
|
57
|
|
|
|
|
|
|
} |
|
58
|
|
|
|
|
|
|
|
|
59
|
0
|
|
|
|
|
|
my $i=0; |
|
60
|
0
|
|
|
|
|
|
while (my ($id, $msg) = each %$messages){ |
|
61
|
0
|
0
|
|
|
|
|
if ($i==10){ |
|
62
|
0
|
|
|
|
|
|
warn "Batch messaging limited to 10 messages"; |
|
63
|
0
|
|
|
|
|
|
last; |
|
64
|
|
|
|
|
|
|
} |
|
65
|
0
|
|
|
|
|
|
$i++; |
|
66
|
0
|
|
|
|
|
|
$params{"SendMessageBatchRequestEntry.$i.Id"} = $id; |
|
67
|
0
|
|
|
|
|
|
$params{"SendMessageBatchRequestEntry.$i.MessageBody"} = $msg; |
|
68
|
|
|
|
|
|
|
} |
|
69
|
|
|
|
|
|
|
|
|
70
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params, [qw/SendMessageBatchResultEntry/]); |
|
71
|
0
|
|
|
|
|
|
my @responses = (); |
|
72
|
|
|
|
|
|
|
|
|
73
|
|
|
|
|
|
|
# default to most recent version |
|
74
|
0
|
|
|
|
|
|
for (@{$href->{SendMessageBatchResult}{SendMessageBatchResultEntry}}) { |
|
|
0
|
|
|
|
|
|
|
|
75
|
0
|
|
|
|
|
|
push @responses, new Amazon::SQS::Simple::SendResponse($_, $messages->{$_->{Id}}); |
|
76
|
|
|
|
|
|
|
} |
|
77
|
|
|
|
|
|
|
|
|
78
|
0
|
0
|
|
|
|
|
if (wantarray){ |
|
79
|
0
|
|
|
|
|
|
return @responses; |
|
80
|
|
|
|
|
|
|
} |
|
81
|
|
|
|
|
|
|
else { |
|
82
|
0
|
|
|
|
|
|
return \@responses; |
|
83
|
|
|
|
|
|
|
} |
|
84
|
|
|
|
|
|
|
} |
|
85
|
|
|
|
|
|
|
|
|
86
|
|
|
|
|
|
|
sub ReceiveMessage { |
|
87
|
0
|
|
|
0
|
1
|
|
my ($self, %params) = @_; |
|
88
|
|
|
|
|
|
|
|
|
89
|
0
|
|
|
|
|
|
$params{Action} = 'ReceiveMessage'; |
|
90
|
|
|
|
|
|
|
|
|
91
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params, [qw(Message)]); |
|
92
|
|
|
|
|
|
|
|
|
93
|
0
|
|
|
|
|
|
my @messages = (); |
|
94
|
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
# default to most recent version |
|
96
|
0
|
0
|
|
|
|
|
if (defined $href->{ReceiveMessageResult}{Message}) { |
|
97
|
0
|
|
|
|
|
|
foreach (@{$href->{ReceiveMessageResult}{Message}}) { |
|
|
0
|
|
|
|
|
|
|
|
98
|
0
|
|
|
|
|
|
push @messages, new Amazon::SQS::Simple::Message( |
|
99
|
|
|
|
|
|
|
$_, |
|
100
|
|
|
|
|
|
|
$self->_api_version() |
|
101
|
|
|
|
|
|
|
); |
|
102
|
|
|
|
|
|
|
} |
|
103
|
|
|
|
|
|
|
} |
|
104
|
|
|
|
|
|
|
|
|
105
|
0
|
0
|
|
|
|
|
if (wantarray) { |
|
|
|
0
|
|
|
|
|
|
|
106
|
0
|
|
|
|
|
|
return @messages; |
|
107
|
|
|
|
|
|
|
} |
|
108
|
|
|
|
|
|
|
elsif (@messages) { |
|
109
|
0
|
|
|
|
|
|
return $messages[0]; |
|
110
|
|
|
|
|
|
|
} |
|
111
|
|
|
|
|
|
|
else { |
|
112
|
0
|
|
|
|
|
|
return undef; |
|
113
|
|
|
|
|
|
|
} |
|
114
|
|
|
|
|
|
|
} |
|
115
|
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
sub ReceiveMessageBatch { |
|
117
|
0
|
|
|
0
|
1
|
|
my ($self, %params) = @_; |
|
118
|
0
|
|
|
|
|
|
$params{MaxNumberOfMessages} = 10; |
|
119
|
0
|
|
|
|
|
|
$self->ReceiveMessage(%params); |
|
120
|
|
|
|
|
|
|
} |
|
121
|
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
sub DeleteMessage { |
|
123
|
0
|
|
|
0
|
1
|
|
my ($self, $message, %params) = @_; |
|
124
|
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
# to be consistent with DeleteMessageBatch, this will now accept a message object |
|
126
|
0
|
|
|
|
|
|
my $receipt_handle; |
|
127
|
0
|
0
|
0
|
|
|
|
if (ref($message) && $message->isa('Amazon::SQS::Simple::Message')){ |
|
128
|
0
|
|
|
|
|
|
$receipt_handle = $message->ReceiptHandle; |
|
129
|
|
|
|
|
|
|
} |
|
130
|
|
|
|
|
|
|
# for backward compatibility, we will still cope with a receipt handle |
|
131
|
|
|
|
|
|
|
else { |
|
132
|
0
|
|
|
|
|
|
$receipt_handle = $message; |
|
133
|
|
|
|
|
|
|
} |
|
134
|
0
|
|
|
|
|
|
$params{Action} = 'DeleteMessage'; |
|
135
|
0
|
|
|
|
|
|
$params{ReceiptHandle} = $receipt_handle; |
|
136
|
|
|
|
|
|
|
|
|
137
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params); |
|
138
|
|
|
|
|
|
|
} |
|
139
|
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
sub DeleteMessageBatch { |
|
141
|
0
|
|
|
0
|
1
|
|
my ($self, $messages, %params) = @_; |
|
142
|
0
|
0
|
|
|
|
|
return unless @$messages; |
|
143
|
0
|
|
|
|
|
|
$params{Action} = 'DeleteMessageBatch'; |
|
144
|
|
|
|
|
|
|
|
|
145
|
0
|
|
|
|
|
|
my $i=0; |
|
146
|
0
|
|
|
|
|
|
foreach my $msg (@$messages){ |
|
147
|
0
|
|
|
|
|
|
$i++; |
|
148
|
0
|
0
|
|
|
|
|
if ($i>10){ |
|
149
|
0
|
|
|
|
|
|
warn "Batch deletion limited to 10 messages"; |
|
150
|
0
|
|
|
|
|
|
last; |
|
151
|
|
|
|
|
|
|
} |
|
152
|
|
|
|
|
|
|
|
|
153
|
0
|
|
|
|
|
|
$params{"DeleteMessageBatchRequestEntry.$i.Id"} = $msg->MessageId; |
|
154
|
0
|
|
|
|
|
|
$params{"DeleteMessageBatchRequestEntry.$i.ReceiptHandle"} = $msg->ReceiptHandle; |
|
155
|
|
|
|
|
|
|
} |
|
156
|
|
|
|
|
|
|
|
|
157
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params); |
|
158
|
|
|
|
|
|
|
} |
|
159
|
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
sub ChangeMessageVisibility { |
|
161
|
0
|
|
|
0
|
1
|
|
my ($self, $receipt_handle, $timeout, %params) = @_; |
|
162
|
|
|
|
|
|
|
|
|
163
|
0
|
0
|
0
|
|
|
|
if (!defined($timeout) || $timeout =~ /\D/ || $timeout < 0 || $timeout > 43200) { |
|
|
|
|
0
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
164
|
0
|
|
|
|
|
|
croak "timeout must be specified and in range 0..43200"; |
|
165
|
|
|
|
|
|
|
} |
|
166
|
|
|
|
|
|
|
|
|
167
|
0
|
|
|
|
|
|
$params{Action} = 'ChangeMessageVisibility'; |
|
168
|
0
|
|
|
|
|
|
$params{ReceiptHandle} = $receipt_handle; |
|
169
|
0
|
|
|
|
|
|
$params{VisibilityTimeout} = $timeout; |
|
170
|
|
|
|
|
|
|
|
|
171
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params); |
|
172
|
|
|
|
|
|
|
} |
|
173
|
|
|
|
|
|
|
|
|
174
|
|
|
|
|
|
|
our %valid_permission_actions = map { $_ => 1 } qw(* SendMessage ReceiveMessage DeleteMessage ChangeMessageVisibility GetQueueAttributes); |
|
175
|
|
|
|
|
|
|
|
|
176
|
|
|
|
|
|
|
sub AddPermission { |
|
177
|
0
|
|
|
0
|
1
|
|
my ($self, $label, $account_actions, %params) = @_; |
|
178
|
|
|
|
|
|
|
|
|
179
|
0
|
|
|
|
|
|
$params{Action} = 'AddPermission'; |
|
180
|
0
|
|
|
|
|
|
$params{Label} = $label; |
|
181
|
0
|
|
|
|
|
|
my $i = 1; |
|
182
|
0
|
|
|
|
|
|
foreach my $account_id (keys %$account_actions) { |
|
183
|
0
|
0
|
|
|
|
|
$account_id =~ /^\d{12}$/ or croak "Account IDs passed to AddPermission should be 12 digit AWS account numbers, no hyphens"; |
|
184
|
0
|
|
|
|
|
|
my $actions = $account_actions->{$account_id}; |
|
185
|
0
|
|
|
|
|
|
my @actions; |
|
186
|
0
|
0
|
|
|
|
|
if (UNIVERSAL::isa($actions, 'ARRAY')) { |
|
187
|
0
|
|
|
|
|
|
@actions = @$actions; |
|
188
|
|
|
|
|
|
|
} else { |
|
189
|
0
|
|
|
|
|
|
@actions = ($actions); |
|
190
|
|
|
|
|
|
|
} |
|
191
|
0
|
|
|
|
|
|
foreach my $action (@actions) { |
|
192
|
0
|
0
|
|
|
|
|
exists $valid_permission_actions{$action} |
|
193
|
|
|
|
|
|
|
or croak "Action passed to AddPermission must be one of " |
|
194
|
|
|
|
|
|
|
. join(', ', sort keys %valid_permission_actions); |
|
195
|
|
|
|
|
|
|
|
|
196
|
0
|
|
|
|
|
|
$params{"AWSAccountId.$i"} = $account_id; |
|
197
|
0
|
|
|
|
|
|
$params{"ActionName.$i"} = $action; |
|
198
|
0
|
|
|
|
|
|
$i++; |
|
199
|
|
|
|
|
|
|
} |
|
200
|
|
|
|
|
|
|
} |
|
201
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params); |
|
202
|
|
|
|
|
|
|
} |
|
203
|
|
|
|
|
|
|
|
|
204
|
|
|
|
|
|
|
sub RemovePermission { |
|
205
|
0
|
|
|
0
|
1
|
|
my ($self, $label, %params) = @_; |
|
206
|
|
|
|
|
|
|
|
|
207
|
0
|
|
|
|
|
|
$params{Action} = 'RemovePermission'; |
|
208
|
0
|
|
|
|
|
|
$params{Label} = $label; |
|
209
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params); |
|
210
|
|
|
|
|
|
|
} |
|
211
|
|
|
|
|
|
|
|
|
212
|
|
|
|
|
|
|
sub GetAttributes { |
|
213
|
0
|
|
|
0
|
1
|
|
my ($self, %params) = @_; |
|
214
|
|
|
|
|
|
|
|
|
215
|
0
|
|
|
|
|
|
$params{Action} = 'GetQueueAttributes'; |
|
216
|
|
|
|
|
|
|
|
|
217
|
0
|
|
|
|
|
|
my %result; |
|
218
|
|
|
|
|
|
|
# default to the current version |
|
219
|
0
|
|
0
|
|
|
|
$params{AttributeName} ||= 'All'; |
|
220
|
|
|
|
|
|
|
|
|
221
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params, [ 'Attribute' ]); |
|
222
|
|
|
|
|
|
|
|
|
223
|
0
|
0
|
|
|
|
|
if ($href->{GetQueueAttributesResult}) { |
|
224
|
0
|
|
|
|
|
|
foreach my $attr (@{$href->{GetQueueAttributesResult}{Attribute}}) { |
|
|
0
|
|
|
|
|
|
|
|
225
|
0
|
|
|
|
|
|
$result{$attr->{Name}} = $attr->{Value}; |
|
226
|
|
|
|
|
|
|
} |
|
227
|
|
|
|
|
|
|
} |
|
228
|
0
|
|
|
|
|
|
return \%result; |
|
229
|
|
|
|
|
|
|
} |
|
230
|
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
sub SetAttribute { |
|
232
|
0
|
|
|
0
|
1
|
|
my ($self, $key, $value, %params) = @_; |
|
233
|
|
|
|
|
|
|
|
|
234
|
0
|
|
|
|
|
|
$params{Action} = 'SetQueueAttributes'; |
|
235
|
0
|
|
|
|
|
|
$params{'Attribute.Name'} = $key; |
|
236
|
0
|
|
|
|
|
|
$params{'Attribute.Value'} = $value; |
|
237
|
|
|
|
|
|
|
|
|
238
|
0
|
|
|
|
|
|
my $href = $self->_dispatch(\%params); |
|
239
|
|
|
|
|
|
|
} |
|
240
|
|
|
|
|
|
|
|
|
241
|
|
|
|
|
|
|
sub _to_string { |
|
242
|
0
|
|
|
0
|
|
|
my $self = shift; |
|
243
|
0
|
|
|
|
|
|
return $self->Endpoint(); |
|
244
|
|
|
|
|
|
|
} |
|
245
|
|
|
|
|
|
|
|
|
246
|
|
|
|
|
|
|
1; |
|
247
|
|
|
|
|
|
|
|
|
248
|
|
|
|
|
|
|
__END__ |
|
249
|
|
|
|
|
|
|
|
|
250
|
|
|
|
|
|
|
=head1 NAME |
|
251
|
|
|
|
|
|
|
|
|
252
|
|
|
|
|
|
|
Amazon::SQS::Simple::Queue - OO API for representing queues from |
|
253
|
|
|
|
|
|
|
the Amazon Simple Queue Service. |
|
254
|
|
|
|
|
|
|
|
|
255
|
|
|
|
|
|
|
=head1 SYNOPSIS |
|
256
|
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
use Amazon::SQS::Simple; |
|
258
|
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
my $access_key = 'foo'; # Your AWS Access Key ID |
|
260
|
|
|
|
|
|
|
my $secret_key = 'bar'; # Your AWS Secret Key |
|
261
|
|
|
|
|
|
|
|
|
262
|
|
|
|
|
|
|
my $sqs = new Amazon::SQS::Simple($access_key, $secret_key); |
|
263
|
|
|
|
|
|
|
|
|
264
|
|
|
|
|
|
|
my $q = $sqs->CreateQueue('queue_name'); |
|
265
|
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
# Single messages |
|
267
|
|
|
|
|
|
|
|
|
268
|
|
|
|
|
|
|
my $response = $q->SendMessage('Hello world!'); |
|
269
|
|
|
|
|
|
|
my $msg = $q->ReceiveMessage; |
|
270
|
|
|
|
|
|
|
print $msg->MessageBody; # Hello world! |
|
271
|
|
|
|
|
|
|
$q->DeleteMessage($msg); |
|
272
|
|
|
|
|
|
|
# or, for backward compatibility |
|
273
|
|
|
|
|
|
|
$q->DeleteMessage($msg->ReceiptHandle); |
|
274
|
|
|
|
|
|
|
|
|
275
|
|
|
|
|
|
|
# Batch messaging of up to 10 messages per operation |
|
276
|
|
|
|
|
|
|
|
|
277
|
|
|
|
|
|
|
my @responses = $q->SendMessageBatch( [ 'Hello world!', 'Hello again!' ] ); |
|
278
|
|
|
|
|
|
|
# or with defined message IDs |
|
279
|
|
|
|
|
|
|
$q->SendMessageBatch( { msg1 => 'Hello world!', msg2 => 'Hello again!' } ); |
|
280
|
|
|
|
|
|
|
my @messages = $q->ReceiveMessageBatch; |
|
281
|
|
|
|
|
|
|
$q->DeleteMessageBatch( \@messages ); |
|
282
|
|
|
|
|
|
|
|
|
283
|
|
|
|
|
|
|
=head1 INTRODUCTION |
|
284
|
|
|
|
|
|
|
|
|
285
|
|
|
|
|
|
|
Don't instantiate this class directly. Objects of this class are returned |
|
286
|
|
|
|
|
|
|
by various methods in C<Amazon::SQS::Simple>. See L<Amazon::SQS::Simple> for |
|
287
|
|
|
|
|
|
|
more details. |
|
288
|
|
|
|
|
|
|
|
|
289
|
|
|
|
|
|
|
=head1 METHODS |
|
290
|
|
|
|
|
|
|
|
|
291
|
|
|
|
|
|
|
=over 2 |
|
292
|
|
|
|
|
|
|
|
|
293
|
|
|
|
|
|
|
=item B<Endpoint()> |
|
294
|
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
Get the endpoint for the queue. |
|
296
|
|
|
|
|
|
|
|
|
297
|
|
|
|
|
|
|
=item B<Delete([%opts])> |
|
298
|
|
|
|
|
|
|
|
|
299
|
|
|
|
|
|
|
Deletes the queue. Any messages contained in the queue will be lost. |
|
300
|
|
|
|
|
|
|
|
|
301
|
|
|
|
|
|
|
=item B<SendMessage($message, [%opts])> |
|
302
|
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
Sends the message. The message can be up to 8KB in size and should be |
|
304
|
|
|
|
|
|
|
plain text. |
|
305
|
|
|
|
|
|
|
|
|
306
|
|
|
|
|
|
|
=item B<SendMessageBatch($messages, [%opts])> |
|
307
|
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
Sends a batch of up to 10 messages, passed as an array-ref. |
|
309
|
|
|
|
|
|
|
Message IDs (of the style 'msg_1', 'msg_2', etc) are auto-generated for each message. |
|
310
|
|
|
|
|
|
|
Alternatively, if you need to specify the format of the message ID then you can pass a hash-ref {$id1 => $message1, etc} |
|
311
|
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
=item B<ReceiveMessage([%opts])> |
|
313
|
|
|
|
|
|
|
|
|
314
|
|
|
|
|
|
|
Get the next message from the queue. |
|
315
|
|
|
|
|
|
|
|
|
316
|
|
|
|
|
|
|
Returns one or more C<Amazon::SQS::Simple::Message> objects (depending on whether called in list or scalar context), |
|
317
|
|
|
|
|
|
|
or undef if no messages are retrieved. |
|
318
|
|
|
|
|
|
|
|
|
319
|
|
|
|
|
|
|
NOTE: This behaviour has changed slightly since v1.06. It now always returns the first message in scalar |
|
320
|
|
|
|
|
|
|
context, irrespective of how many there are. |
|
321
|
|
|
|
|
|
|
|
|
322
|
|
|
|
|
|
|
See L<Amazon::SQS::Simple::Message> for more details. |
|
323
|
|
|
|
|
|
|
|
|
324
|
|
|
|
|
|
|
Options for ReceiveMessage: |
|
325
|
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
=over 4 |
|
327
|
|
|
|
|
|
|
|
|
328
|
|
|
|
|
|
|
=item * MaxNumberOfMessages => INTEGER |
|
329
|
|
|
|
|
|
|
|
|
330
|
|
|
|
|
|
|
Maximum number of messages to return (integer from 1 to 20). SQS never returns more messages than this value but might |
|
331
|
|
|
|
|
|
|
return fewer. Not necessarily all the messages in the queue are returned. Defaults to 1. |
|
332
|
|
|
|
|
|
|
|
|
333
|
|
|
|
|
|
|
=item * WaitTimeSeconds => INTEGER |
|
334
|
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
Long poll support (integer from 0 to 20). The duration (in seconds) that the I<ReceiveMessage> action call will wait |
|
336
|
|
|
|
|
|
|
until a message is in the queue to include in the response, as opposed to returning an empty response if a message |
|
337
|
|
|
|
|
|
|
is not yet available. |
|
338
|
|
|
|
|
|
|
|
|
339
|
|
|
|
|
|
|
If you do not specify I<WaitTimeSeconds> in the request, the queue attribute I<ReceiveMessageWaitTimeSeconds> |
|
340
|
|
|
|
|
|
|
is used to determine how long to wait. |
|
341
|
|
|
|
|
|
|
|
|
342
|
|
|
|
|
|
|
=item * VisibilityTimeout => INTEGER |
|
343
|
|
|
|
|
|
|
|
|
344
|
|
|
|
|
|
|
The duration in seconds (integer from 0 to 43200) that the received messages are hidden from subsequent retrieve |
|
345
|
|
|
|
|
|
|
requests after being retrieved by a I<ReceiveMessage> request. |
|
346
|
|
|
|
|
|
|
|
|
347
|
|
|
|
|
|
|
If you do not specify I<VisibilityTimeout> in the request, the queue attribute I<VisibilityTimeout> is used to |
|
348
|
|
|
|
|
|
|
determine how long to wait. |
|
349
|
|
|
|
|
|
|
|
|
350
|
|
|
|
|
|
|
=back |
|
351
|
|
|
|
|
|
|
|
|
352
|
|
|
|
|
|
|
=item B<ReceiveMessageBatch([%opts])> |
|
353
|
|
|
|
|
|
|
|
|
354
|
|
|
|
|
|
|
As ReceiveMessage(MaxNumberOfMessages => 10) |
|
355
|
|
|
|
|
|
|
|
|
356
|
|
|
|
|
|
|
=item B<DeleteMessage($message, [%opts])> |
|
357
|
|
|
|
|
|
|
|
|
358
|
|
|
|
|
|
|
Pass this method either a message object or receipt handle to delete that message from the queue. |
|
359
|
|
|
|
|
|
|
For backward compatibility, can pass the message ReceiptHandle rather than the message. |
|
360
|
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
=item B<DeleteMessageBatch($messages, [%opts])> |
|
362
|
|
|
|
|
|
|
|
|
363
|
|
|
|
|
|
|
Pass this method an array-ref containing up to 10 message objects to delete all of those messages from the queue |
|
364
|
|
|
|
|
|
|
|
|
365
|
|
|
|
|
|
|
=item B<ChangeMessageVisibility($receipt_handle, $timeout, [%opts])> |
|
366
|
|
|
|
|
|
|
|
|
367
|
|
|
|
|
|
|
NOT SUPPORTED IN APIs EARLIER THAN 2009-01-01 |
|
368
|
|
|
|
|
|
|
|
|
369
|
|
|
|
|
|
|
Changes the visibility of the message with the specified receipt handle to |
|
370
|
|
|
|
|
|
|
C<$timeout> seconds. C<$timeout> must be in the range 0..43200. |
|
371
|
|
|
|
|
|
|
|
|
372
|
|
|
|
|
|
|
=item B<AddPermission($label, $account_actions, [%opts])> |
|
373
|
|
|
|
|
|
|
|
|
374
|
|
|
|
|
|
|
NOT SUPPORTED IN APIs EARLIER THAN 2009-01-01 |
|
375
|
|
|
|
|
|
|
|
|
376
|
|
|
|
|
|
|
Sets a permissions policy with the specified label. C<$account_actions> |
|
377
|
|
|
|
|
|
|
is a reference to a hash mapping 12-digit AWS account numbers to the action(s) |
|
378
|
|
|
|
|
|
|
you want to permit for those account IDs. The hash value for each key can |
|
379
|
|
|
|
|
|
|
be a string (e.g. "ReceiveMessage") or a reference to an array of strings |
|
380
|
|
|
|
|
|
|
(e.g. ["ReceiveMessage", "DeleteMessage"]) |
|
381
|
|
|
|
|
|
|
|
|
382
|
|
|
|
|
|
|
=item B<RemovePermission($label, [%opts])> |
|
383
|
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
NOT SUPPORTED IN APIs EARLIER THAN 2009-01-01 |
|
385
|
|
|
|
|
|
|
|
|
386
|
|
|
|
|
|
|
Removes the permissions policy with the specified label. |
|
387
|
|
|
|
|
|
|
|
|
388
|
|
|
|
|
|
|
=item B<GetAttributes([%opts])> |
|
389
|
|
|
|
|
|
|
|
|
390
|
|
|
|
|
|
|
Get the attributes for the queue. Returns a reference to a hash |
|
391
|
|
|
|
|
|
|
mapping attribute names to their values. Currently the following |
|
392
|
|
|
|
|
|
|
attribute names are returned: |
|
393
|
|
|
|
|
|
|
|
|
394
|
|
|
|
|
|
|
=over 4 |
|
395
|
|
|
|
|
|
|
|
|
396
|
|
|
|
|
|
|
=item * VisibilityTimeout |
|
397
|
|
|
|
|
|
|
|
|
398
|
|
|
|
|
|
|
=item * ApproximateNumberOfMessages |
|
399
|
|
|
|
|
|
|
|
|
400
|
|
|
|
|
|
|
=back |
|
401
|
|
|
|
|
|
|
|
|
402
|
|
|
|
|
|
|
=item B<SetAttribute($attribute_name, $attribute_value, [%opts])> |
|
403
|
|
|
|
|
|
|
|
|
404
|
|
|
|
|
|
|
Sets the value for a queue attribute. Currently the only valid |
|
405
|
|
|
|
|
|
|
attribute name is C<VisibilityTimeout>. |
|
406
|
|
|
|
|
|
|
|
|
407
|
|
|
|
|
|
|
=back |
|
408
|
|
|
|
|
|
|
|
|
409
|
|
|
|
|
|
|
=head1 ACKNOWLEDGEMENTS |
|
410
|
|
|
|
|
|
|
|
|
411
|
|
|
|
|
|
|
Chris Jones provied the batch message code in release 2.0 |
|
412
|
|
|
|
|
|
|
|
|
413
|
|
|
|
|
|
|
=head1 AUTHOR |
|
414
|
|
|
|
|
|
|
|
|
415
|
|
|
|
|
|
|
Copyright 2007-2008 Simon Whitaker E<lt>swhitaker@cpan.orgE<gt> |
|
416
|
|
|
|
|
|
|
Copyright 2013-2017 Mike (no relation) Whitaker E<lt>penfold@cpan.orgE<gt> |
|
417
|
|
|
|
|
|
|
|
|
418
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify it |
|
419
|
|
|
|
|
|
|
under the same terms as Perl itself. |
|
420
|
|
|
|
|
|
|
|
|
421
|
|
|
|
|
|
|
=cut |