FIFO 主题的消息分组 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

FIFO 主题的消息分组

属于同一组的消息按相对于组的严格顺序逐个处理。

向 Amazon SNS FIFO 主题发布消息时,需设置消息组 ID。组 ID 是指定消息属于特定消息组的强制令牌。SNS FIFO 主题将组 ID 传递给订阅的 Amazon SQS FIFO 队列。SNS FIFO 主题或 SQS FIFO 队列中的组 ID 数量没有限制。消息组 ID 不会传递给 Amazon SQS 标准队列。

消息组和订阅之间没有关联性。因此,发布到任何消息组的消息都会传输到所有已订阅队列,但须遵守附加到订阅的任何筛选策略。有关更多信息,请参阅 FIFO 主题的消息传输FIFO 主题的消息筛选

汽车零部件价格管理示例使用案例中,平台中销售的每个产品都有一个专用的消息组。用同一个 Amazon SNS FIFO 主题处理所有价格更新。价格更新的顺序保留在单个汽车零部件产品的上下文中,但不是跨多个产品。下图演示了工作原理。请注意,对于消息组 ID 为 product-214 的产品,m1 消息始终在 m4 消息之前受到处理。此顺序将在整个工作流程中保留,这些工作流程使用 Amazon SNS FIFO 和 Amazon SQS FIFO。同样,对于消息组 ID 为 product-799 的产品,只要工作流程使用 Amazon SNS FIFO 和 Amazon SQS FIFO,则消息 m2 将在消息 m3 之前受到处理。但是,使用 Amazon SQS 标准队列时,将无法保证消息顺序,也不存在消息组。product-214product-799 消息组彼此独立,因此它们的消息排序方式之间没有任何关系。


      消息按照相对于消息组更严格的顺序进行处理。

按消息组 ID 分发数据以提高性能

为了优化传输吞吐量,Amazon SNS FIFO 主题并行传送来自不同消息组的消息,同时严格维护每个消息组内的消息顺序。每个消息组每秒最多可以传送 300 条消息。因此,为了实现单个主题的高吞吐量,须使用大量不同的消息组 ID。通过利用一组不同的消息组,Amazon SNS FIFO 主题可自动在更多并行分区中分发消息。

注意

Amazon SNS FIFO 主题经过优化,可在各消息组 ID 之间均匀分发消息,与组的数量无关。Amazon 建议您使用大量不同的消息组 ID,以优化性能。

当以高吞吐量发布到您的 Amazon SNS FIFO 主题并且订阅了一个或多个 Amazon SQS FIFO 队列时,建议您在队列上启用高吞吐量。有关更多信息,请参阅《Amazon Simple Queue Service 开发人员指南》中的 FIFO 队列的高吞吐量