本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 主题还支持 AWS KMS 使用密钥进行消息服务器端加密 (SSE),以及通过 VPC 终端节点进行消息隐私。 AWS PrivateLink有关更多信息,请参阅 FIFO 主题的 Amazon SNS 消息安全性。