FIFO 主题的消息排序详细信息 - Amazon Simple Notification Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

FIFO 主题的消息排序详细信息

FIFO 主题按照消息发布到该主题的确切顺序将消息传送到订阅的 Amazon SNS FIFO 队列。Amazon SQS对于 SQS FIFO 队列,队列的使用者按消息发送到队列的确切顺序接收消息。此设置将保留端到端消息排序,如以下基于 FIFO 主题示例使用案例 的示例所示。


        在自动分段电子商务平台上严格排序消息传输。

请注意,订阅者没有隐式排序。以下示例显示消息 m1 首先被发送到批发订阅者,然后被发送到零售订阅者。消息 m2 首先被发送到零售订阅者,然后被发送到批发订阅者。虽然两条消息按不同的顺序传递给订阅者,但消息顺序将针对每个订阅者保留。每个订阅者是以独立于任何其他订阅者的方式来感知的。


        针对每个订阅者严格有序的消息传输。

如果 SQS FIFO 队列订阅者变得无法访问,则可能会不同步。例如,假设批发应用程序队列拥有者错误地更改了 Amazon SQS 队列策略,使得 Amazon SNS 服务委托人无法将消息传送至队列。在这种情况下,不会交付批发价格更新,但零售价格更新会成功,从而导致订阅者无法同步。当批发应用程序队列拥有者更正队列策略时,Amazon SNS 继续将消息传送到订阅的队列。在队列配置错误时发布到主题的任何消息都将被删除,除非订阅配置了死信队列


        批发队列订阅者暂时无法访问。

您可以让多个应用程序 (或同一应用程序中的多个线程) 将消息并行发布到 SNS FIFO 主题。在执行此操作时,您可以有效地将消息顺序委派给 Amazon SNS 服务。要确定建立的消息序列,您可以检查序列号。

序列号是一个大型的、不连续的、递增的数字,Amazon SNS 将它分配给您发布的每条消息。序列号作为消息正文的一部分传递给订阅的 SQS FIFO 队列。但是,如果您启用原始消息传输,则传输到 SQS FIFO 队列的消息不包含序列号或任何其他 SNS 消息元数据。


        Amazon SNS 为每条消息分配一个唯一的序列号并将该序列号传递给 Amazon SQS。

Amazon SNS FIFO 主题定义消息组上下文中的排序。有关更多信息,请参阅FIFO 主题的消息分组