使用AWS SDK for PHP获取SQS队列中的所有消息

使用AWS SDK for PHP获取SQS队列中的所有消息,php,amazon-web-services,amazon-sqs,Php,Amazon Web Services,Amazon Sqs,我正在尝试使用AWS PHP SDK检索队列中的所有消息 前面曾经有一个get\u queue\u size()方法来获取队列大小,然后我将迭代循环以获取所有消息 在最新的SDK中,我没有看到这样的方法 有人能告诉我如何使用最新的PHP SDK接收队列中的所有消息吗?您可以获取队列中的所有消息,但无法一次获取所有消息。您可以请求消息,并指定希望的最大值,一次最多10个,并且您需要请求另一组消息,直到队列为空为止(即使如此,如果可能随时有新消息进来,您也需要不断轮询SQS) 同样重要的是,请记住,

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

前面曾经有一个
get\u queue\u size()
方法来获取队列大小,然后我将迭代循环以获取所有消息

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


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

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


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

要获取队列大小,请使用:

要从队列中获取消息,请使用。E.J.Brennan的另一个回答提供了关于这一问题的信息

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

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