AWS SQS:当消费者发生错误时移动到死信队列

sar*_*ath 4 amazon-sqs amazon-web-services node.js

我曾尝试使用像 sqs-queue-parallel 和 sqs-consumer 这样的 npm 包来消费节点中的 SQS 消息

但是最近我有一种机制,当处理特定消息时发生错误时,应该将其移至死信队列

但截至目前,它继续按最大接收次数重试消息

是否可以使用其他一些 npm 包,是否应该在发生错误时直接将其移至死信队列?

Gee*_*Jan 6

知道这有点晚了,但认为 OP 正试图要求动态政策。IE:

  • 在正常错误上 -> 根据 redrive-policy 重试。
  • 但是,对于某些失败,您可能知道即使您尝试一百个项目也无法恢复。在这种情况下 -> 将消息直接移动到死信队列。

如果大概是问什么,如何做后者。

答案可能是手动将消息复制到死信队列(在这方面它的行为就像任何其他队列一样),然后从源队列中删除消息。

不要相信有一种“特殊”的方法可以做到这一点。


Mat*_*ser 4

您可以将 SQS 队列配置为在接收到 1 到 1000 之间任意数量的失败消息后将消息移至死信队列。

要仅在一次接收失败后将消息移至死信队列,请修改队列的配置并将“最大接收数”值设置为 1。这将是队列“重新驱动策略”的一部分。

请参阅以下有关配置队列的 AWS 文档: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSDeadLetterQueue.html