Blu*_*ell 6 amazon-web-services dead-letter amazon-sns aws-lambda serverless
在 SNS 主题或 Lambda 函数上设置死信队列有什么区别?
我想知道,因为如果您在 SNS 订阅上设置 DLQ,那么当 Lambda(订阅者)失败时,该订阅消息将故障转移到 DLQ,对吗?那么在这种情况下,在这两个地方设置 DLQ 会产生相同的效果吗?
我在 SNS 主题订阅上设置了 DLQ,但它没有“自动”显示为 Lambda 屏幕设置上的 DLQ,所以我认为可能存在一些差异?
SNS 死信队列参考:https : //docs.aws.amazon.com/sns/latest/dg/sns-dead-letter-queues.html
通常,当 Amazon SNS 由于客户端或服务器端错误而无法访问订阅的终端节点时,消息传送会失败。
Lambda 死信队列参考:https : //aws.amazon.com/about-aws/whats-new/2016/12/aws-lambda-supports-dead-letter-queues/
在标准重试策略(失败时额外重试 2 次)用完后,AWS Lambda 会将调用 Lambda 函数的事件对象写入此 [DLQ] 端点。
拉姆达:
SNS订阅:
Chr*_*ams 11
SNS DLQ 特定于 SNS,这样做的好处是它还可以解决客户端错误,例如 Lambda 服务关闭。这将确保如果 Lambda 服务关闭,消息可以稍后重播到该服务,而如果 DLQ 附加到 Lambda,则仅在服务正在运行时才考虑重播。
然而,正如我提到的,SNS DLQ 仅适用于来自 SNS 的通知,而 Lambda 可以支持来自任何传入事件的 DLQ。这意味着如果您有多个 SNS 主题,或者一个 SNS 主题和一些 SQS 队列,您只需将其应用到 Lambda 本身。
两种服务都使用 SQS 作为 DLQ,因此两者的摄取/检索将是相同的。如果您在这两个服务上都有 DLQ,那么您可能最终会得到事件/通知的 2 个副本,但是您不太可能同时获得这两个副本,因为理论上 Lambda 端点会承认 SNS 会将其视为已发送,这将导致如果失败,Lambda 有责任添加到 DLQ。
| 归档时间: |
|
| 查看次数: |
1493 次 |
| 最近记录: |