AWS SQS: задержка предоставления доступа к сообщению, которое не удалось обработать

Вот мой сценарий:

  • У меня есть очередь SQS, которая обрабатывает ряд задач. Эти задачи могут, и часто это не удается. Их провал является обычным и несколько ожидаемым.
  • Когда задача не выполняется, я хочу повторить ее через определенное время, и после определенного количества попыток передать элемент в DLQ. Я не хочу повторять попытку немедленно.

У меня есть рабочее приложение EB, которое обрабатывает эти задачи. Когда это удается, я возвращаю 200 (и задача успешно удаляется из очереди). Когда это не удается, я возвращаю 404, и задача немедленно возвращается в очередь (и, таким образом, немедленно повторяется). Это нежелательно, я хотел бы отложить этот неудачный элемент, прежде чем он будет повторен.

Возможно ли это сделать с помощью комбинации тайм-аутов видимости и очередей задержки?

2 ответа

Решение

Ответил на мой собственный вопрос, оказалось, что я искал не в том месте (параметры конфигурации SQS, а не параметры конфигурации EB). Волшебные настройки, которые я искал, это "время ожидания ошибки" в параметрах конфигурации EB, которое позволяет вам контролировать количество времени, в течение которого отказавший элемент перед возвращением в свою очередь.

Вы можете сделать это непосредственно с SQS, вызвав ChangeMessageVisibility для сообщения, которое вы только что не смогли обработать, и установив VisibilityTimeout на то, что вы хотите: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html

Другие вопросы по тегам