веб-сервисы Amazon — получение всех сообщений в очереди SQS с помощью AWS SDK для переполнения стека.

Я пытаюсь получить все сообщения в очереди, используя AWS PHP SDK,

Раньше был get_queue_size() метод, чтобы получить размер очереди, а затем я бы повторил цикл, чтобы получить все сообщения.

В новейшем SDK я не вижу такого метода. Ссылка на сайт

Может кто-нибудь сказать мне, как я могу получить все сообщения в очереди, используя последний SDK для PHP?

3

Решение

Вы можете получить все сообщения в очереди, вы просто не можете получить их все сразу. Вы запрашиваете сообщения и указываете максимум, который вы хотите максимум до 10 одновременно, более того, и вам нужно будет запрашивать другой набор сообщений, пока ваша очередь не станет пустой (и даже в этом случае вам нужно постоянно опрашивать SQS, если есть вероятность, что новые сообщения будут поступать в любое время).

Также важно помнить, что даже если у вас в очереди менее 10 сообщений и вы запрашиваете максимум 10 (и даже если в данный момент не выполняется опрос других клиентов), вы все равно можете не получить все сообщения в очереди на данный звонок — нужно опрашивать повторно.

7

Другие решения

Чтобы получить размер очереди, используйте Операция GetQueueAttributes:

$result = $client->getQueueAttributes(array(
'QueueUrl' => '{{QUEUE_URL}}',
'AttributeNames' => array('ApproximateNumberOfMessages'),
));

$queueSize = $result['Attribute']['ApproximateNumberOfMessages'];

Чтобы получать сообщения из очереди, используйте Операция ReceiveMessage. Другой ответ Э.Дж. Бреннан информативен относительно этого вопроса.

2

По вопросам рекламы [email protected]