Как может работник SQS, написанный с помощью bref, сигнализировать о повторной попытке?
После установки
batchSize: 1
как работник должен указывать на успех и как указывать на временный сбой / запрашивать повторную попытку? Я прочитал https://docs.aws.amazon.com/lambda/latest/dg/invocation-retries.html, но он, очевидно, не охватывает настраиваемую среду выполнения, и совсем не ясно, что происходит, и не говорит о SQS в любом случае. Я подозреваю, что просто выбросить исключение может быть достаточно, но я не могу понять, какие сигналы Lambda.
В таких руководствах, как https://medium.com/cs-code/setup-queue-with-serverless-laravel-using-bref-92b2cd803bb7, об этом не упоминается. Это говорит о
maxReceiveCount: 3
но не о том, как заставить SQS повторить попытку позже.
2 ответа
По словам сопровождающего брафа:
Эй, да, именно так: выбросить исключение в обработчике и позволить ему подняться до Bref (который перейдет к Lambda, а затем к SQS).
Я не уверен в настраиваемой среде выполнения, но в Nodejs, если вы просто выдаете ошибку, сообщение будет доступно обратно в SQS, если ошибка не возникнет, оно будет удалено из SQS.
Настроить очередь недоставленных сообщений для sqs после
maxRetryCount
, поэтому ваше сообщение будет отправлено в DLQ после повторных попыток. После устранения причины сбоев вы можете переместить сообщение из DLQ в основной SQS, используя другую лямбду или cli.
SQS не будет повторять попытку, так как лямбда выполняет длинный опрос из SQS.