FIFO 主题的 Amazon SNS 消息重复数据删除 - Amazon Simple Notification Service

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

FIFO 主题的 Amazon SNS 消息重复数据删除

Amazon SNS FIFO 主题和 Amazon SQS FIFO 队列支持消息重复数据删除,只要满足以下条件,即可提供一次性消息传输和处理:

  • 订阅的 Amazon SQS FIFO 队列存在,并具有允许 Amazon SNS 服务委托人向队列传输消息的权限。

  • Amazon SQS FIFO 队列使用者处理消息,并在可见性超时到期之前将其从队列中删除。

  • Amazon SNS 订阅主题没有消息筛选功能。配置邮件筛选时,Amazon SNS FIFO 主题支持 at-most-once传送,因为可以根据您的订阅筛选策略筛选出消息。

  • 没有阻止确认邮件传输的网络中断。

注意

当主题FifoThroughputScope属性设置为时,消息重复数据删除适用于整个 Amazon SNS FIFO 主题。Topic当主题属性设置FifoThroughputScope为时MessageGroup,消息重复数据删除将应用于每个单独的消息组

当您将消息发布到 Amazon SNS FIFO 主题时,该消息必须包含重复数据删除 ID。此 ID 包含在 Amazon SNS FIFO 主题传输给订阅的 Amazon SQS FIFO 队列的消息中。

如果成功将具有特定重复数据删除 ID 的消息发布到 Amazon SNS FIFO 主题,则在五分钟重复数据删除间隔内,使用相同重复数据删除 ID 发布的任何消息都将被接受但不会传送。即使在消息传送到订阅的终端节点之后,Amazon SNS FIFO 主题仍在主题属性配置的重复数据删除范围内FifoThroughputScope,继续跟踪消息重复数据删除 ID。

如果保证消息正文对于每个已发布的消息都是唯一的,您可以为 Amazon SNS FIFO 主题和订阅的 Amazon SQS FIFO 队列启用基于内容的重复数据删除。Amazon SNS 使用消息正文生成一个唯一的哈希值,以用作每个消息的重复数据删除 ID,因此您无需在发送每条消息时设置重复数据删除 ID。

注意

消息属性不包括在哈希计算中。

如果为 Amazon SNS FIFO 主题启用基于内容的重复数据删除,并且发布了带有重复数据删除 ID 的消息,则发布的重复数据删除 ID 将覆盖生成的基于内容的重复数据删除 ID。

汽车零部件价格管理示例使用案例中,公司必须为每次价格更新设置一个通用唯一的重复数据删除 ID。这是因为即使在批发和零售的消息属性不同时,消息正文也可以是相同的。但是,如果公司将业务类型(批发或零售)与产品 ID 和产品价格一起添加到消息正文中,它们可以在 Amazon SNS FIFO 主题和订阅的 Amazon SQS FIFO 队列中启用基于内容的复制。

使用汽车零件价格管理示例,消息重复数据删除在 Amazon SNS FIFO(先入先出)主题环境中的工作原理。它显示了如何防止发布到 Amazon SNS FIFO 主题的重复消息(m1)多次传送到订阅用户系统(批发、零售和分析队列)。这种重复数据删除可确保只处理唯一的消息,从而提高不同订阅用户功能之间消息处理的效率和准确性。

除了消息排序和重复数据删除外,Amazon SNS FIFO 主题还支持 AWS KMS 使用密钥进行消息服务器端加密 (SSE),以及通过 VPC 终端节点进行消息隐私。 AWS PrivateLink有关更多信息,请参阅 FIFO 主题的 Amazon SNS 消息安全性