FIFO主题的 Amazon SNS 消息持久性 - Amazon Simple Notification Service

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

FIFO主题的 Amazon SNS 消息持久性

亚马逊SNSFIFO主题和亚马逊SQS队列是持久的。这两种资源类型都以冗余方式跨多个可用区存储消息,并提供死信队列以处理异常情况。

在亚马逊中SNS,当亚马逊SNS主题由于客户端或服务器端错误而无法访问已订阅的亚马逊SQS队列时,消息传递就会失败:

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

    • 删除队列。

    • 更改队列策略时会阻止 Amazon SNS 服务主体向其发送消息。

    Amazon SNS 不会重试发送由于客户端错误而失败的消息。

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

    • Amazon SQS 服务不可用。

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

    当服务器端出现错误时,Amazon SNS FIFO 主题会在 23 天内重试失败的配送次数 100,015 次。有关更多信息,请参阅 Amazon SNS 消息传送重试次数

对于任何类型的错误,亚马逊SNS都可以将消息留给亚马逊SQS死信队列,这样数据就不会丢失。

在 Amazon 中SQS,当使用者应用程序无法接收、处理消息并将其从队列中删除时,消息处理就会失败。当最大数量的接收请求失败时,Amazon SQS 可以将消息留给死信队列,这样数据就不会丢失。

汽车零部件价格管理示例用例中,公司可以为每个亚马逊SNSFIFO主题订阅以及每个订阅的亚马逊队列分配一个亚马逊SQSSQS死信队列 (DLQ)。这可以保护公司免受任何价格更新损失。

示例,说明如何将死信队列 (DLQs) 与亚马逊SNSFIFO主题和亚马逊SQS队列集成,以确保汽车零件价格管理系统中的消息可靠性。它显示了用于批发、零售和分析目的的每个 Amazon SNS FIFO 订阅都与相应的 Amazon SQS FIFO 或标准队列配对的设置,每个队列都配备了自己的类型匹配队列,DLQ以防止由于处理失败而导致消息丢失。

与亚马逊SNS订阅关联的死信队列必须是与订阅SQS队列相同类型的亚马逊队列。例如,亚马逊SNSFIFO订阅的亚马逊SQSFIFO队列必须将亚马逊SQSFIFO队列作为死信队列。同样,亚马逊SNSFIFO订阅的亚马逊SQS标准队列必须使用亚马逊SQS标准队列作为其死信队列。有关更多信息,请参阅 Amazon SNS 死信队列 Comp AWS ute 博客上的 “DLQs为亚马逊设计耐用的无服务器应用程序” SNSSQS, AWS Lambda Amazon

为了延长持久性以帮助从下游故障中恢复,主题所有者还可以使用FIFO主题将消息存档长达 365 天。然后,主题订阅用户可以将这些消息重播到已订阅的端点,以恢复因下游应用程序故障而丢失的消息,或者复制现有应用程序的状态。有关更多信息,请参阅Amazon SNS 消息存档和重播FIFO主题