gpt4 book ai didi

amazon-web-services - AWS-SQS批处理大小和Lambda方法

转载 作者:行者123 更新时间:2023-12-04 14:53:55 26 4
gpt4 key购买 nike

如果我理解正确,Lambda上的批处理大小设置将决定从SQS一次扫描中要接收多少条消息。因此,此JSON(来自测试Lambda SQS);

{
"Records": [
{
"messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
"receiptHandle": "MessageReceiptHandle",
"body": "FAIL",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1523232000000",
"SenderId": "123456789012",
"ApproximateFirstReceiveTimestamp": "1523232000001"
},
"messageAttributes": {
},
"md5OfBody": "7b270e59b47ff90a553787216d55d91d",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:eu-west-1:123456789012:MyQueue",
"awsRegion": "eu-west-1"
}
]
}


有Records数组。如果我将批处理大小设置为5,那么如果SQS中有5条消息,它们将包含在数组中。如果有10条消息,则Lambda将被调用两次,每条Record中有5条消息。

现在我对采用哪种方法感到困惑。我的Lambda很简单。它将是对外部服务的Axios POST请求。如果出现错误,我将抛出错误。我什至可以使用axios-retry,并使重试相当容易。

我应该使用批处理吗?天真地看,我只需要1到1。换句话说,消息到达了。 Lambda接过。如果错误,它将在稍后自动重试。

相反,我将不得不遍历所有消息并尝试Axios请求。如果五个消息中的第三个失败,那我抛出一个错误并且Lambda停止了该怎么办。消息四和消息五会怎样?他们是否不满意SQS,然后再次选择执行另一次执行?

最佳答案

我只需要1到1。换句话说,消息就到了。 Lambda需要
它。如果错误,它将在稍后自动重试。


在上述情况下,我认为您不需要批处理。


如果五则讯息中的三分之一失败了,那我会抛出一个
错误,Lambda停止。消息四和消息五会怎样?
他们是否不满意SQS,然后再次选择执行另一次执行?


如果您的Lambda错误(基于SQS visibility timeoutredrive policy配置),则不会从队列中删除消息。 SQS将根据配置再次触发Lambda。如果已配置DLQ,则在达到maxReceiveCount之后,失败的消息将被添加到DLQ并从主队列中删除。

关于amazon-web-services - AWS-SQS批处理大小和Lambda方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54574014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com