当前位置: 首页 > 知识库问答 >
问题:

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

程毅
2023-03-14

该文件指出

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

函数在尝试到达终结点时超时。

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

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

我的问题:如果我使用SQS Lambda集成(.NET)

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

函数会重试吗?当所有重试后抛出异常时,它会放入DLQ吗?

共有1个答案

公羊向荣
2023-03-14

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

出现这种行为的原因是您授予Lambda代表您轮询队列的权限。如果它得到一个消息,它就会调用一个函数,并给您一个处理该消息的机会。如果失败,消息返回队列,并且Lambda继续代表您轮询队列,它不关心下一个消息是与失败的消息相同还是全新的消息。

这里有一篇很棒的博客文章,它帮助我理解了这些触发器是如何工作的。

 类似资料:
  • 我注意到,在这个javadoc中,https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.htmlUncaughtExceptionHandler用于发生异常但未被捕获的情况。但是,那个线程会悄悄地失败吗?我想是的,因为它是异步进行业务的,但我正在调查我们的一个进程的相关问题,我很惊讶现

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 问题内容: 假设我将Sun的JVM嵌入C ++应用程序中。通过JNI,我调用了Java方法(我自己的),该方法又调用了我在共享库中实现的本机方法。 如果此本机方法抛出C ++异常,会发生什么? 编辑:编译器是gcc 3.4.x,jvm是sun的1.6.20。 问题答案: 在JNI文献中,“ 异常 ”一词似乎专门用于指代Java异常。本机代码中发生的意外事件称为 编程错误 。JNI明确不需要JVM检

  • 我在其中一个POJO中使用javax.validation.constraints.NotNull,如下所示: 然后,即使我为两个字段都使用 null 值制作 Abc 的对象,它也不会引发任何异常。知道为什么吗? 例如。 不会抛出任何异常。

  • 我已经用Java编写代码一段时间了。但有时,我不知道什么时候应该抛出异常,什么时候应该捕获异常。我正在做一个有很多方法的项目。层次结构是这样的- 所以目前我正在做的是-我在所有方法中抛出异常并在方法A中捕获它,然后将其记录为错误。 但我不确定这是否是正确的方法?或者我应该开始在所有方法中捕获异常。这就是为什么这种混乱始于我的 - 我什么时候应该抓住异常与何时应该抛出异常。我知道这是一个愚蠢的问题,

  • 问题内容: 最近,我接受了公司的采访,他们给了我一个编码问题。我得到了与纸牌有关的程序,其中一种方法是将纸牌洗牌。因此,我将该程序编写为: 在上面的代码中,我引发了我最怀疑的 IllegalArgumentException 。在什么情况下实际上应该抛出运行时异常?我们是否应该实际抛出运行时异常? 谢谢 问题答案: 我们是否应该实际抛出运行时异常? 是的,我们应该。运行时异常有特定的用途-它们发出