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

时间:2014-11-30 18:53:21

标签: php amazon-web-services amazon-sqs

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

之前曾经有一个get_queue_size()方法来获取队列大小,然后我将遍历循环以获取所有消息。

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

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

2 个答案:

答案 0 :(得分:7)

您可以获取队列中的所有消息,但您无法立即获取所有消息。您可以请求消息,并指定一次最多10个的最大值,并且您需要再次请求另一组消息,直到您的队列为空(甚至是那么如果新消息有可能随时进入,你需要经常轮询SQS。

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

答案 1 :(得分:2)

要获取队列大小,请使用GetQueueAttributes operation

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

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

要从队列中获取消息,请使用ReceiveMessage operation。 E.J.的另一个答案。 Brennan对此事提供了丰富的信息。