使用适用于 PHP 的 AWS 开发工具包获取 SQS 队列中的所有消息


Get all messages in SQS queue using AWS SDK for PHP

我正在尝试使用AWS PHP SDK检索队列中的所有消息。

早些时候,曾经有一种get_queue_size()方法来获取队列大小,然后我会遍历循环以获取所有消息。

在最新的SDK中,我没有看到这样的方法。链接

有人可以告诉我如何使用最新的 PHP SDK 接收队列中的所有消息吗?

您可以获取队列中的所有消息,但无法一次获取所有消息。您请求消息,并指定一次最多 10 条消息的最大值,并且您需要请求另一组消息,直到队列为空(即使这样,如果随时可能会有新消息传入,您也需要不断轮询 SQS)。

同样重要的是要记住,即使您队列中的消息少于 10 条,并且您请求的最大值为 10(即使当前没有其他客户端轮询),您仍然可能无法在给定调用中获取队列中的所有消息 - 您需要重复轮询。

若要获取队列大小,请使用 GetQueueAttributes 操作:

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

若要从队列中获取消息,请使用接收消息操作。E.J.布伦南的另一个回答是关于这个问题的信息。