FIFO 主题的消息持久性 - Amazon Simple Notification Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

FIFO 主题的消息持久性

Amazon SNS FIFO 主题和 Amazon SQS FIFO 队列具有持久性。这两种资源类型均以冗余方式跨多个可用区存储消息,并提供死信队列来处理特殊情况。

在 Amazon SNS 中,当 Amazon SNS 主题由于客户端或服务器端错误而无法访问订阅的 Amazon SQS 队列时,消息传输将失败:

  • 当 SNS FIFO 主题具有过时的订阅元数据时,会发生客户端错误。客户端错误的两个常见原因是 SQS FIFO 队列所有者执行以下操作之一:

    • 删除队列。

    • 更改队列策略的方式会阻止 Amazon SNS 服务委托人将消息传输到队列中。

    Amazon SNS 不会重试因客户端错误而失败的消息传输。

  • 服务器端错误可能在以下情况下发生:

    • 服务不可用。Amazon SQS

    • Amazon SQS 无法处理来自 Amazon SNS 服务的有效请求。

    当发生服务器端错误时,SNS FIFO 主题会在 23 天内重试失败的传输,最多 1000015 次。有关更多信息,请参阅Amazon SNS 消息传输重试

对于任何类型的错误,Amazon SNS 可将消息附带到 Amazon SQS 死信队列,以便数据不会丢失。

在 Amazon SQS 中,当使用者应用程序无法接收、处理消息并将其从队列中删除时,消息处理将失败。当最大接收请求数失败时,Amazon SQS 可以为死信队列添加附加消息,以便数据不会丢失。

自动分段价格管理示例使用案例中,公司可以将 SQS FIFO 死信队列 (DLQ) 分配给每个 SNS FIFO 主题订阅,以及每个订阅的 SQS FIFO 队列。这可以保护公司免受任何价格更新损失。


        配置 Amazon SQS 死信队列以确保消息不会丢失。

与 SNS FIFO 订阅或 SQS FIFO 队列关联的死信队列必须是 SQS FIFO 队列。死信队列必须位于与其保护的 SNS FIFO 订阅或 SQS FIFO 队列相同的 AWS 区域和 AWS 账户中。有关更多信息,请参阅Amazon SNS 死信队列 (DLQ)使用适用于 DLQs 的 Amazon SNS 设计持久的无服务器应用程序、Amazon SQS、AWS Lambda 文章(在AWS 计算博客上)。