FIFO 主题的消息排序详细信息
Amazon SNS FIFO 主题按照消息发布到主题的确切顺序向订阅的 Amazon SQS FIFO 队列传送消息。使用 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 FIFO 主题定义消息组上下文中的排序。有关更多信息,请参阅 FIFO 主题的消息分组。