我试图将数千条消息排队到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条消息。
请帮助,提前致谢。
答案 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万条请求。
我希望这些信息有用!