如何提高亚马逊sqs排队速度?

时间:2016-05-26 10:35:18

标签: php laravel amazon-web-services aws-sdk amazon-sqs

我试图将数千条消息排队到sqs。我根据计数循环遍历for循环并将消息发送到队列。以下是我的循环外观

$sqsClient = AWS::createClient('sqs');
  for($i=0; $i<=$count;$i++){
    $sqsClient->sendMessage(array(
    'QueueUrl'    => 'https://sqs.us-west-2.amazonaws.com/xyz123/QueueName',
    'MessageBody' => 'Hello World',
    ));
  }

这样它每秒只排队10条消息。如何将其增加到每秒排队1000条消息。

请帮助,提前致谢。

3 个答案:

答案 0 :(得分:2)

SQS是一个分布式系统。从多个线程/进程/机器并行发送消息以提高吞吐量。

答案 1 :(得分:1)

为了将消息传递增加到1000条消息/秒,您必须对AWS SQS使用水平扩展。以下是在AWS SQS中实现水平扩展的开发人员指南。

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/throughput.html

如果您只是使用普通队列而不缩放10条消息/秒只是您可以实现的目标。

答案 2 :(得分:0)

根据&#34;亚马逊SQS产品详情&#34;页面(请参阅https://aws.amazon.com/sqs/details/),您似乎已经修复了每批10个请求的限制(请参阅&#34;功能&#34;部分):

  

最多可以批量发送,接收或删除邮件   消息或256KB。批次的成本与单个邮件的成本相同,   意味着SQS对于使用的客户来说更具成本效益   配料。

我还在常见问题解答中注意到,根据您的等级,您每月可能会被限制为固定数量的邮件(请参阅&#34;结算&#34;此处部分:https://aws.amazon.com/sqs/faqs/):

  

Amazon SQS免费套餐每月提供100万个请求   收费。许多小规模应用程序可能完全可以运行   在此免费等级限制内。数据传输费用仍可能适用   (见定价)。免费套餐是每月优惠。免费使用没有   累积了几个月。

如果您处于免费套餐并打算每秒发送数千封邮件,我怀疑您会很快发出100万条请求。

我希望这些信息有用!