我们有一个以 AWS Lambda 作为目标的 SNS,并且有一个与 SNS 关联的 DLQ,用于处理 Lambda 限制或其他错误。我们希望实现一个自动重试系统,将消息从 DLQ 重新发送到 SNS。然而,我们希望对其保持智能,并确保它不会盲目地将消息转发到 SNS。我们需要一种机制来检查 lambda 是否受到限制或者是否违反了保留的并发性。我们正在考虑使用 Cloud Watch lambda 指标的解决方案,特别是使用 Java SDK 的“限制”和“错误”。
请问有人可以建议这个解决方案是否可行吗?我们如何使用Java SDK来实现它?此外,对于这个问题有没有其他解决方案或建议?
嗯,依靠 CloudWatch 指标来确定消息是否由于限制问题而失败并不是正确的方法。这是因为死信队列(DLQ)用于存储各种失败的消息,因此无法根据失败原因来区分消息。为了解决这个问题,您需要实现自己的逻辑来过滤来自 DLQ 的限制消息。
下图说明了如何实现这一目标: