

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

# FIFO 主题的 Amazon SNS 消息分组
<a name="fifo-message-grouping"></a>

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

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

消息组和订阅之间没有关联性。因此，发布到任何消息组的消息都会传输到所有已订阅队列，但须遵守附加到订阅的任何筛选策略。有关更多信息，请参阅 [FIFO 主题的 Amazon SNS 消息传输](fifo-message-delivery.md) 和 [FIFO 主题的 Amazon SNS 消息筛选](fifo-message-filtering.md)。

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

![\[消息排序和重复数据删除在涉及 Amazon Web Services 服务 不同和消息组的 Amazon SNS FIFO 主题场景中如何工作的示例。 IDs它显示了从 Lambda 函数通过 Amazon SNS FIFO 主题流向各种类型的 Amazon SQS 队列（FIFO 和标准）的消息流，在 FIFO 队列中保持严格的顺序，同时演示了标准队列中的潜在混乱。此设置用于强调消息排序在诸如电子商务平台价格更新之类的应用程序中的重要性，突出显示每个消息组如何在不同的消费者服务中独立维持其顺序。\]](http://docs.amazonaws.cn/sns/latest/dg/images/sns-fifo-grouping.png)


## 按消息组分发数据 IDs 以提高性能
<a name="fifo-message-grouping-message-group-ids"></a>

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

**注意**  
Amazon SNS FIFO 主题经过优化，可以跨消息组均匀分发消息 IDs，无论组的数量如何。 Amazon 建议您使用大量不同的消息组 IDs 以优化性能。

当以高吞吐量发布到您的 Amazon SNS FIFO 主题并且订阅了一个或多个 Amazon SQS FIFO 队列时，建议您在队列上启用高吞吐量。有关更多信息，请参阅《Amazon Simple Queue Service 开发人员指南》**中的 [FIFO 队列的高吞吐量](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html)。