一家公司在多个 Amazon EC2 实例上运行一个应用程序,该应用程序从 Amazon SQS 队列处理消息,写入 Amazon RDS 表,然后从队列中删除消息。尽管 SQS 队列中没有重复消息,但 RDS 表中偶尔会出现重复记录。解决方案架构师应该怎么做才能确保消息只被处理一次?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 使用 ChangeMessageVisibility API 调用增加可见性超时。.
为什么这是答案
当应用程序从 Amazon SQS 队列处理消息时,如果处理时间超过了消息的可见性超时时间,其他消费者可能会再次收到并处理同一条消息,从而导致 RDS 表中出现重复记录。增加可见性超时(ChangeMessageVisibility API 调用)可以确保在消息被成功处理并删除之前,其他消费者不会再次接收到该消息,从而有效防止重复处理。 其他选项: 使用 CreateQueue API 调用创建一个新队列:这并不能解决重复处理的问题,因为新队列仍然可能面临相同的可见性超时挑战。 使用 AddPermission API 调用添加适当的权限:权限管理与消息重复处理无关。 使用 ReceiveMessage API 调用设置适当的等待时间:长轮询(设置等待时间)可以减少空响应,但不能防止在处理过程中因超时导致的重复处理。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡