0

在设置batchSize: 1了worker应该如何指示成功以及它应该如何指示临时失败/请求重试之后?我读了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 稍后重试。

4

2 回答 2

1

根据 bref 维护者的说法:

嘿,是的,就是这样:在处理程序中抛出一个异常,让它冒泡到 Bref(它会冒泡到 Lambda,然后是 SQS)。

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

于 2021-04-12T21:09:33.043 回答
0

我不确定自定义运行时,但在 Nodejs 中,如果您只是抛出一个错误,则该消息在 SQS 中可用,以防万一没有抛出错误,它会从 SQS 中删除。

为 sqs after 配置一个死信队列maxRetryCount,这样你的消息将在重试后进入 DLQ。修复失败原因后,您可以使用另一个 lambda 或 cli 将消息从 DLQ 移动到主 SQS。

SQS 不会重试自身,因为 lambda 从 SQS 进行长轮询。

于 2021-04-12T04:03:30.547 回答