微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用 bref 编写的 SQS 工作者如何发出重试信号?

如何解决用 bref 编写的 SQS 工作者如何发出重试信号?

设置 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 稍后重试。

解决方法

根据 bref 维护者的说法:

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

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

,

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。