相关疑难解决方法(0)

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

如果我理解正确,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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

lambda amazon-sqs amazon-web-services

6
推荐指数
1
解决办法
3695
查看次数

批量处理AWS Lambda消息

我在想什么,我真的找不到关于它的信息。也许这不是要走的路,但是,我只想知道。

这是关于Lambda批量工作的。我知道我可以设置Lambda来使用批处理消息。在我的Lambda函数中,我迭代每条消息,如果一条消息失败,则Lambda退出。然后循环再次开始。

我想知道关于略有不同的方法让我们假设我有三个信息:Ç。我也分批服用。现在,如果消息B失败(例如API调用失败),我将消息B返回给SQS,并继续处理消息C。

可能吗?如果是,这是一个好方法吗?因为我看到我需要在Lambda中实现一些额外的复杂性,而没有实现。

谢谢

amazon-sqs amazon-web-services aws-lambda

3
推荐指数
1
解决办法
1601
查看次数