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

AWS--在SNS订阅上设置死信队列和在Lambda函数上设置死信队列有什么区别?

通和裕
2023-03-14

在SNS话题上设置死信队列和在Lambda功能上设置死信队列有什么区别?

我在想,因为如果您在SNS订阅上设置DLQ,那么当Lambda(订阅者)失败时,订阅消息将故障转移到DLQ,对吗?那么在这种情况下,在这两个地方设置DLQ会有相同的效果吗?

我在SNS主题订阅上设置了一个DLQ,它并没有“自动”地显示为Lambda屏幕设置上的DLQ,所以我想可能会有一些不同?

SNS死信队列ref:https://docs.aws.amazon.com/SNS/latest/dg/sns-dead-letter-queue.html

通常,当Amazon SNS由于客户端或服务器端错误而无法访问订阅endpoint时,消息传递将失败。

Lambda死信队列ref:https://aws.amazon.com/about-aws/whats-new/2016/12/aws-lambda-supports-dead-letter-queues/

兰姆达:

SNS订阅:

共有1个答案

祁晟
2023-03-14

SNS DLQ是专门针对SNS的,这里的好处是它还可以解释客户端错误,如Lambda服务关闭。这将确保如果Lambda服务关闭,消息可以稍后重播给它,而如果DLQ附加到Lambda,这将只考虑在服务运行时的重播。

但是,正如我提到的,SNS DLQ仅用于来自SNS的通知,而Lambda可以支持来自任何传入事件的DLQ。这意味着如果您有多个SNS主题,或者一个SNS主题和一些SQS队列,您只需要将它应用到Lambda本身。

两个服务都将SQS用于它们的DLQ,因此两者的摄取/检索将是相同的。如果您在两个服务上都有一个DLQ,那么是的,您可能会得到事件/通知的两个副本,但是您不太可能同时得到这两个副本,因为理论上Lambdaendpoint会确认SNS将其视为已发送,如果它失败,这将是Lambda的责任添加到DLQ中。

 类似资料:
  • 我有一个lambda函数,我想为它创建一个SQS死信队列。我首先在Terraform中创建SQS: 这是来自Terraform的例子。但是,我被redrive_policy卡住了。 我是否正确理解,这为SQS队列设置了一个死信队列? 如果我设置了redrive_policy,这意味着我在一个DLQ上设置了一个DLQ。我觉得可以在DLQ上设置DLQ,在DLQ上设置DLQ,以此类推。 我找不到这方面的

  • 我正在尝试使用Lambda的一纸空文队列。我已将其配置为将消息发送到SNS队列。我放入了一个不正确的处理程序,以使Lambda调用错误消失。错误消息永远不会到达SNS队列。我相信这是一个权限问题。下面是SNS队列的“我的访问策略”设置 lambda函数附加了一个角色,该角色具有、到以及到 我错过什么了吗?有没有其他原因消息可能不会到达DLQ?

  • 我有一个现有的AWS Lambda(通过CloudFormation创建),现在我想修改它,使它有一个死信队列。本质上,这允许我重新配置Lambda,这样,如果它在执行期间无法处理/使用SQS消息,AWS将自动将消息发布到我选择的“死信队列”(DLQ)。 我一辈子都想不出该怎么加上: 我的Lambdas CF配置,如上面链接的文章所示。我能做的最接近的事情是: 在Lambdas主页上选择“管理此堆

  • 问题内容: 我的ActiveMQ服务器中目前有一个名为的队列。每当消息处理失败时,ActiveMQ都会创建一个默认目录。是否可以将该名称更改为类似的名称?原因是将来我可能会有几个队列,而我希望它像 问题答案: 您要查找的东西称为,在此过程中,ActiveMQ为每个队列/主题创建特定的DLQ, 您可以按如下,通过调整你实现它有点 此配置将创建名称为的DLQ ,如果您不需要前缀,则可以删除属性。 希望

  • 死信队列(Dead Letter Queue)本质上同普通的Queue没有区别,只是它的产生是为了隔离和分析其他Queue(源Queue)未成功处理的消息。 创建死信队列的方法参见createQueue() API,与创建普通队列无异, 死信队列不可调用deadMessage(), deadMessageBatch API,其他操作都与对普通Queue的操作无异。 为了将源Queue的未能成功处理

  • 对于异步的触发器,平台会对函数失败的任务进行最多3次重试。 在新建触发器的时候,为触发器配置一条死信队列,从用户的EMQ队列中选择一条,用于接收函数失败的任务。 在设置死信队列前,请对group: CIf76b0600-24e9-42c4-acf3-d491fbd9fd71​ 授予 FULL_CONTROL 权限,若不授予权限,平台将丢弃失败的任务信息。 消息的内容如下,以后可能增加字段,请用户在