FIFO主题的消息分组 - Amazon Simple Notification Service

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

FIFO主题的消息分组

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

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

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

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

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

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

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

注意

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

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