使用多少个 SQS 队列和 Lambda 来重试异步系统中的失败消息

问题描述 投票:0回答:1

我正在尝试使用常见的 AWS 技术设计一个基本的异步日志流系统,并需要一些指导。

用例只是通过 kinesis 数据流传输 cloudwatch 日志事件,然后将其传输到 lambda,该 lambda 对日志执行一些转换,然后将它们发送到另一个服务。我认为,由于我使用具有良好重试机制和容错能力的 AWS 服务,因此它处于系统的尾部,我需要专注于提高弹性和容错能力。我们不能在这个系统中删除日志事件。

在我看来,我们可以使用 SQS 队列,在其中放置失败的消息以进行重试。

我觉得至少我们需要另一个 lambda 来从该队列中拾取消息进行重试。如果 lambda 再次失败,它可以将消息发送到 DLQ,我们可以在那里进行检查并手动重新驱动。

在重试 lambda 中,代码可能与处理日志事件的原始 lambda 函数非常相似,它将再次对失败的消息进行相同的调用。

我们调用的服务会抛出各种不同的异常,其中一些异常例如我们可以根据这些异常进行重试。

这听起来对吗?对于此类情况是否有更常见的模式?如果有人有链接,最好阅读一些关于这方面的好文章。

谢谢

asynchronous amazon-sqs retry-logic
1个回答
0
投票

考虑将 Amazon Kinesis Data Firehose 数据转换 作为 Kinesis Firehose 的使用者。这使您可以根据需要设置 Lambda 逻辑,并使用 AWS 托管的缓冲和异步调用。然后,您可以使用 Kinesis 和 DynamoDB 事件源的故障处理功能

© www.soinside.com 2019 - 2024. All rights reserved.