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

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

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

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

  • 已订阅的 Amazon SQS FIFO 队列存在且拥有允许亚马逊SNS服务主体向该队列传送消息的权限。

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

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

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

注意

消息重复数据删除适用于整个 Amazon SNS FIFO 主题,而不适用于单个消息组

当您向 Amazon SNS FIFO 主题发布消息时,该消息必须包含重复数据删除 ID。此 ID 包含在亚马逊SNSFIFO主题发送给已订阅的亚马逊SQSFIFO队列的消息中。

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

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

注意

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

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

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

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

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