SQS Lambda集成-引发异常时会发生什么

时间:2018-12-25 12:06:42

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

The document states that

  

Lambda函数可能由于以下任何原因而失败:

     

该函数在尝试到达端点时超时。

     

该函数无法成功解析输入数据。

     

该函数遇到资源限制,例如内存不足   错误或其他超时。

对于我来说,我正在使用具有SQS集成的C#Lambda

  

如果调用失败或超时,则批处理中的每条消息都将返回到队列,并且一旦“可见性超时”时间段到期,每条消息都可以进行处理

我的问题:如果我使用SQS Lambda集成(.NET)会发生什么?

  • 我的函数抛出异常
  • 我的SQS可见性计时器设置为15分钟,最大接收计数为1 ,DLQ设置

函数会重试吗? 在所有重试后引发异常时,是否会将其放入DLQ中?

1 个答案:

答案 0 :(得分:2)

当您的代码引发未处理/未捕获的异常时,Lambda就会失败。如果将最大接收计数设置为1,则消息将在第一次失败后发送到DLQ,将不会重试。例如,如果您的最大接收计数设置为5,则Lambda函数失败时,可见性超时到期后,消息将返回到队列。

此行为的原因是您授予Lambda代表您轮询队列的权限。如果收到消息,它将调用一个函数,并为您提供处理该消息的机会。如果失败,则消息返回队列,Lambda继续代表您轮询队列,它不在乎下一条消息与失败消息还是全新消息相同。

这是一个很棒的博客post,它帮助我了解了这些触发器的工作原理。