Как может работник 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).

https://github.com/brefphp/bref/discussions/911

Я не уверен в настраиваемой среде выполнения, но в Nodejs, если вы просто выдаете ошибку, сообщение будет доступно обратно в SQS, если ошибка не возникнет, оно будет удалено из SQS.

Настроить очередь недоставленных сообщений для sqs после maxRetryCount, поэтому ваше сообщение будет отправлено в DLQ после повторных попыток. После устранения причины сбоев вы можете переместить сообщение из DLQ в основной SQS, используя другую лямбду или cli.

SQS не будет повторять попытку, так как лямбда выполняет длинный опрос из SQS.

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