Ric*_*ick 4 amazon-sqs amazon-web-services aws-lambda
我有一个 AWS SQS 队列(标准,非 FIFO),它有一个 Lambda 函数作为使用者。
每当我向队列发送一堆消息(通常一次大约 10 条)时,lambda 只会拾取大约 2 条消息(在 CloudWatch Logs 中进行验证)。其他人从队列中消失。
Lambda 批量大小设置为 1,因此我希望所有 10 条消息都位于队列中并被 Lambda 一条一条地拾取,但这并没有发生。我正在使用 CloudWatch 检查 Lambda 正在做什么,并且没有丢失消息的痕迹。
我通过记录数组的大小event.Records(始终为 1)在 Lambda 中验证它每次只收到一条消息。
该队列还有一个死信队列。最初,最大接收数设置为 1。当我将其增加到 3 时,在队列可见性超时后会拾取更多消息,但仍然只有少数。
我的队列设置
我想知道为什么消息没有被处理,而是消失了?
事实证明,这与 Lambda 函数的预留并发有关。我的并发数设置为 1,这导致了问题。
我期望 SQS 消息将保留在队列中,直到有 Lambda 函数可以拾取它们。
实际上, 由于函数受到限制而未被 Lambda 拾取的消息以及在可见性超时之后将被视为失败消息。
关于这个问题有一篇很棒的博客文章:https://data.solita.fi/lessons-learned-from-combining-sqs-and-lambda-in-a-data-project/
| 归档时间: |
|
| 查看次数: |
3580 次 |
| 最近记录: |