AWS SQS 多个 DLQ

AWS SQS multiple DLQs

我们目前有一个用于处理传入数据的 sqs 队列。是否有推荐的方法来管理一个队列的两个 DLQ?

我是否必须为第一个 szenario 手动将消息放入 dlq,或者有更好的方法吗?

谢谢!

一个 Amazon SQS 队列只有一个死信队列

如果一条消息从 SQS 队列中读取的次数超过定义的次数,则可以将该消息移至死信队列以供以后处理。但是,无法控制将消息发送到死信队列的条件。它只是基于被检索的消息超过 maxReceiveCount.

参见:Amazon SQS dead-letter queues

请注意,SQS 本身不处理消息。相反,您将有一个应用程序或 AWS Lambda 函数从队列中读取消息并处理消息。因此,您可以将所需的功能(检查传入数据、响应 Mongo maxConnections)编程到处理来自 SQS 的消息的代码中。如果它检测到此类问题,该程序可以将消息发送到特定队列,然后从源 SQS 队列中删除原始消息。

这与具有“多个 DLQ”的行为相同,除了 您的代码 负责将消息移动到这些队列的逻辑,而不是 Amazon SQS它。

一个队列只能有一个 DLQ。

但是,您可以为那个 DLQ 订阅一个 lambda 函数

lambda 函数可以处理“坏”消息 并分发到其他 DQL 队列。因此,您可以有额外的 DLQ,该函数将为其过滤消息。

SQS 仅支持单个 DLQ .

或者您可以做的是,让 **Queue**消费者 处理您的第一个案例。意思是“如果传入数据存在解析错误”Consumer移动到另一个queue.

并且 redrive policy 第二种情况 将被自动处理并移至 Real DLQmaxReceiveCount

之后