gpt4 book ai didi

javascript - 使用 SQS 队列的 lambda 函数如何将消息发送到死信队列?

转载 作者:行者123 更新时间:2023-12-03 00:18:56 25 4
gpt4 key购买 nike

我有一个 AWS lambda 函数,它使用来自 AWS SQS 队列的数据。如果此 lambda 在处理消息数据时发现问题,则必须将该消息添加到死信队列中。

我发现的文档并不清楚如何让 lambda 将消息发送到死信队列。这是如何实现的?

我应该使用 sendMessage() 方法,就像插入标准队列一样,还是有更好的方法?

最佳答案

AWS 将自动向您的 dead-letter-queue (DLQ) 发送消息如果 receiveMessage 返回该消息太多次(可在队列上使用 maxReceiveCount 属性进行配置) - 通常如果您收到一条消息,但不删除它(例如,如果您在处理它时遇到了一些异常)。这是使用 DLQ 的最简单方法 - 让 AWS 为您将消息放在那里。

但是,手动向 DLQ 发送消息没有任何问题。它没有什么特别的 - 它只是另一个队列 - 您可以从中发送和接收消息,甚至给它自己的 DLQ!

手动向 DLQ 发送消息在多种情况下非常有用,最简单的一种情况就是您的情况:当您知道消息已损坏(并且希望节省尝试重新处理它的时间)时。另一个例子是,如果您需要快速销毁主队列中的旧项目,但仍保存这些消息以供稍后处理 - 使您能够通过首先处理较新的事件来 catch 积压的情况。

手动向 DLQ 发送消息时要记住的关键事项是:

  1. 首先将消息发送到队列
  2. 将消息标记为在原始队列中已使用(使用 deleteMessage),以便 AWS 的自动机制稍后不会将其放在那里。
    • 如果您先从原始队列中删除消息,则该消息有很小的可能会丢失(即:如果您在将消息存储到其他地方之前崩溃或出现错误)

关于javascript - 使用 SQS 队列的 lambda 函数如何将消息发送到死信队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54408406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com