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

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 为每条消息分配一个唯一的序列号,并将序列号传递给 Amazon SQS。

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