如何处理 Amazon SQS 中的死信队列?

Ala*_*reb 7 queue events amazon-sqs amazon-web-services

我正在为我的一个项目使用事件驱动架构。Amazon Simple Queue Service 支持处理失败。

如果消息未成功处理,它不会到达我从队列中删除消息的部分。如果是一次性失败,会得到宽容的处理。但是,如果它是错误消息,则会进入 DLQ。

我的问题是DLQ 稍后会发生什么?有数千条这样的消息被困在 DLQ 中。他们应该如何处理?

我很想听到一些组织中已有的现实例子和工程流程。

Joh*_*ein 6

“这取决于!”

由于某些事情没有按预期发生,消息将被发送到死信队列。这可能是由于数据问题、超时或编码错误造成的。

你应该:

  • 开始检查进入死信队列的消息
  • 尝试并重新处理消息以确定失败的根本原因(但有时这是无法重现的随机故障)
  • 找到原因后,更新系统以处理该特定用例,然后转向下一个原因

常见原因可能是数据库锁定、网络错误、编程错误和数据损坏。

设置某种监控可能是一个好主意,以便有人更快地进行调查,而不是让它积累到数千条消息。