向SQS发布信息时出现错误。亚马逊SQS; 状态码: 403; 错误代码。RequestThrottled

问题描述 投票:0回答:2

从我的API网关,我正在发布JSON有效载荷到我的一个SQS FIFO队列中,从这个队列中再次被消耗并发布到另一个FIFO队列中。

当我从API网关发布JSON有效载荷到我的第一个SQS FIFO队列时,得到以下错误。AmazonSQS; Status Code: 403; 错误代码: RequestThrottled

目前我正在进行一个性能测试.我每秒连续发送200条消息,在大约10分钟后,我开始为几个请求得到RequestThrottled错误。在总共500000个请求中,大约有2000个throttled错误。

我使用简单的AWS Java SDK来发布消息到SQS。

final SendMessageRequest sendMessageRequest = new SendMessageRequest(sqsURL, messageMetaData);
sendMessageRequest.setMessageGroupId(BoostConstant.GROUP_NAME);
sendMessageRequest.setMessageDeduplicationId(messageMetaData.getId());
amazonSQS.sendMessage(sendMessageRequest);

在我看来,由于有这么多的消息,SQS的FIFO可能有一些限制。但需要你的帮助来了解有什么可能的方法来解决这个问题。

先谢谢你。

java amazon-web-services amazon-sqs aws-java-sdk
2个回答
2
投票

确实有一个限制&gt。

默认情况下,FIFO队列支持每秒最多3000条消息的批处理,或者每秒最多300条消息(每秒300次发送、接收或删除操作),而不进行批处理。如果您需要更高的吞吐量,请提交支持票据,请求审查您的 FIFO 队列要求。

如果需求需要,您可以联系AWS支持增加。

请看。https:/aws.amazon.comsqsfaqs#FIFO_queues。


1
投票

你可能达到的一个极限是 信息吞吐量:

如果你使用 批量,FIFO队列最多支持 每秒钟3,000次交易,每个API方法(SendMessageBatch、ReceiveMessage或DeleteMessageBatch)。3000个事务代表300次API调用,每次调用10条消息。要请求增加配额,请提交支持请求。

如果不进行批处理,FIFO队列最多支持 每秒300次API调用每个API方法(SendMessage、ReceiveMessage或DeleteMessage)。

© www.soinside.com 2019 - 2024. All rights reserved.