Q55 — AWS SAA-C03 第1章

第 55/65 题 | ← 返回第1章

Q55.一家公司有两个应用程序:一个发送方应用程序发送带有待处理有效负载的消息,一个处理应用程序用于接收带有有效负载的消息.该公司希望实施一项 AWS 服务来处理两个应用程序之间的消息.发件人应用程序每小时可以发送大约 1,000 条消息.处理消息最多可能需要 2 天时间.如果消息无法处理,则必须保留它们,以便它们不会影响处理 0f 任何剩余消息.哪种解决方案满足这些要求并且是最高效的运营方式?

正确答案: C. 将发送方和处理方应用程序与 Amazon Simple Queue Service (Amazon SQS) 集成;队列.配置死信队列以收集处理失败的消息.

解析

为了满足在发送者和有效地处理应用程序之间处理消息的需求,最有效的解决方案是选项C:将发送者和处理者应用程序与Amazon Simple Queue Service (Amazon SQS)队列集成,并配置一个死信队列来收集处理失败的消息。 以下是为什么这个解决方案是最合适的: 1. Amazon Simple Queue Service (Amazon SQS): SQS是一个完全托管的消息队列服务,它将发送方和处理应用程序解耦。它充当缓冲区来存储消息并提供可靠的消息传递。 2. 死信队列:通过在SQS中配置死信队列,在定义的重试次数内无法处理的任何消息都可以移动到死信队列中,以便进一步分析。这确保了剩余消息的处理不受失败消息的影响。 通过实施该解决方案,公司获得以下好处: -解耦和可扩展性:SQS将发送方和处理应用程序解耦,允许它们独立运行并根据需要进行扩展。发送方应用程序可以以自己的速度将消息发送到队列,处理方应用程序可以以自己的速度检索和处理消息。 —消息保留:SQS自动保留队列中的消息,直到它们被显式删除或移动到死信队列。这确保了消息不会丢失,即使它们需要2天的时间来处理,也可以处理。 —错误处理:如果消息在定义的重试次数内处理失败,则将其移至死信队列。这使得公司可以在不影响其他消息处理的情况下调查和解决问题。 选项A建议设置一个运行Redis数据库的Amazon EC2实例。虽然这可以工作,但它通过管理和维护EC2实例和Redis数据库引入了操作开销。它的操作效率不如使用完全托管的服务(如SQS)。 选项B建议使用带有Kinesis客户端库(KCL)的Amazon Kinesis数据流与处理应用程序集成。虽然Kinesis可以处理高消息速率,但它更适合实时流场景,并且可能会为给定的需求引入不必要的复杂性。 选项D建议使用Amazon Simple Notification Service (Amazon SNS)进行消息传递和处理通知。虽然SNS是一个可以分发消息的发布/订阅系统,但它不提供与SQS相同级别的解耦和消息保留,特别是对于无法处理的消息。