【问题标题】:AWS - Lambda and SQS behaviorAWS - Lambda 和 SQS 行为
【发布时间】:2019-07-01 11:40:56
【问题描述】:

我已经设置了一个 SQS、DeadLetterQue (DLQ) 和一个 lambda。我对 SQS 收到的正文格式有一些疑问。 经过一些尝试,我可以看到一些消息以 DLQ 结束。

我已经阅读了很多文档,但实际上我仍然无法弄清楚一些基本的东西。

我的任务相当简单。我将使用 Axios 将一些有效负载发送到外部 API。该 API 可能会给我一个错误,或者当时不可用。这段代码很简单,但最后会包含 Axios 的实现:

exports.handler = async (event, context) => {   
    event.Records.forEach(record => {
    const { body } = record;
    const { messageAttributes } = record;
    console.log(body)
    console.log(messageAttributes);
  });  
    let somethingWentWrongWithApi = new Error();
    throw somethingWentWrongWithApi;    
}; 

运行后,一段时间后我在 DLQ 中看到消息,原始 SQS 为空,正如我所料。

在实际代码中,我将有 catch 块。在里面我会抛出错误,就像例子一样。 Lambda 将尝试执行 3 次(我不确定我从哪里得到这些信息)。然后,它会将其返回给 SQS,然后 SQS 会将其推送到 DLQ。

我想知道,我应该在 Lambda 重试中实现,并在 3 次后抛出错误......还是仅仅抛出它并依赖现有进程(3 次重试)?

我仍在阅读有关 SQS 和 Lambda 的不同设置。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sqs


    【解决方案1】:

    要延长执行尝试,您必须访问:

    1. SQS 服务;
    2. 右键单击您的 SQS;
    3. 选择一个配置队列选项
    4. Dead Letter Queue Settings 行下,您可以看到一个 Maximum Receives 属性(可以设置在 1 到 1000 之间)。

    关于错误。如果 lambda 方面出现问题然后 lambda 抛出错误,您可以检查 cloudwatch 抛出的错误类型。

    1. 转到 aws CloudWatch;
    2. 在右侧面板中找到日志;
    3. 选择日志组。

    如果您有任何其他问题,请致电我。我会试着回答他们,我会扩展这个答案。

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2020-07-28
      • 2021-04-09
      • 1970-01-01
      • 2021-03-28
      • 2020-05-17
      • 2019-07-01
      • 1970-01-01
      • 2019-06-02
      相关资源
      最近更新 更多