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 主题会最多重试失败的传输 100015 次(时间超过 23 天)。有关更多信息,请参阅 Amazon SNS 消息传输重试。
-
对于任何类型的错误,Amazon SNS 都可以将消息搁置到 Amazon SQS 死信队列中,以免数据丢失。
在 Amazon SQS 中,当使用者应用程序无法接收消息、处理消息并从队列中删除消息时,消息处理将失败。当接收请求的最大数量失败时,Amazon SQS 可以将消息搁置到死信队列中,以免数据丢失。
在汽车零部件价格管理示例使用案例,公司可以为每个 SNS FIFO 主题订阅以及每个订阅的 SQS FIFO 队列分配一个 SQS FIFO 死信队列 (DLQ)。这可以保护公司免受任何价格更新损失。

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