Ошибка при публикации сообщения в SQS: AmazonSQS; Код состояния: 403; Код ошибки: RequestThrottled

Из своего шлюза API я публикую полезные данные JSON в одну из моих очередей SQS FIFO, из которых снова потребляются и публикуются в другой очереди FIFO.

При публикации моих полезных данных JSON из API Gateway в мою первую очередь SQS FIFO, я получил следующую ошибку: AmazonSQS; Код состояния: 403; Код ошибки: RequestThrottled

В настоящее время я работаю над тестированием производительности. Я отправляю непрерывно 200 сообщений каждую секунду, и примерно через 10 минут я начинаю получать ошибки RequestThrottled для нескольких запросов. Приходит около 2000 ошибок дроссельной заслонки в сумме 500000 запросов.

Я использую простой Java SDK AWS для публикации сообщения в SQS:

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

Мне кажется, что из-за большого количества сообщений в SQS FIFO может быть какой-то предел. Но вам нужна ваша помощь, чтобы понять, каковы возможные способы решения этой проблемы.

Заранее спасибо.


person Arindam    schedule 14.05.2020    source источник


Ответы (2)


Действительно есть предел>

По умолчанию очереди FIFO поддерживают до 3000 сообщений в секунду с пакетной обработкой или до 300 сообщений в секунду (300 операций отправки, получения или удаления в секунду) без пакетной обработки. Если вам требуется более высокая пропускная способность, отправьте заявку в службу поддержки, чтобы запросить проверку ваших требований к очереди FIFO.

Вы можете обратиться в службу поддержки AWS для увеличения, если этого требует спрос.

См .: https://aws.amazon.com/sqs/faqs/#FIFO_queues

person Chris Williams    schedule 14.05.2020

Предел, который вы можете достичь, - пропускная способность сообщений:

Если вы используете пакетную обработку, очереди FIFO поддерживают до 3000 транзакций в секунду для каждого метода API (SendMessageBatch, ReceiveMessage или DeleteMessageBatch). 3000 транзакций представляют собой 300 вызовов API, каждый с пакетом из 10 сообщений. Чтобы запросить увеличение квоты, отправьте запрос в службу поддержки.

Без пакетной обработки очереди FIFO поддерживают до 300 вызовов API в секунду для каждого метода API (SendMessage, ReceiveMessage или DeleteMessage).

person Marcin    schedule 14.05.2020