我正在尝试使用AWS PHP SDK
检索队列中的所有邮件。
之前曾经有一个get_queue_size()
方法来获取队列大小,然后我将遍历循环以获取所有消息。
在最新的SDK中,我没有看到这样的方法。 Link
有人可以告诉我如何使用最新的PHP SDK接收队列中的所有消息吗?
答案 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对此事提供了丰富的信息。