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首先交付给批发订阅者,然后交付给零售订阅者。Messagem2首先交付给零售订阅者,然后交付给批发订阅者。尽管这两条消息以不同的顺序传递给订阅者,但是每个订阅者都会保留邮件顺序。每个用户都与任何其他用户隔离感知。

如果 SQS FIFO 队列订阅者变得无法访问,它可能会不同步。例如,假设批发应用程序队列所有者错误地更改了Amazon SQS 队列策略,以防止 Amazon SNS 服务主体将消息传递到队列。在这种情况下,批发价格更新不会交付,但零售价格更新成功,导致订阅者不同步。批发应用程序队列所有者更正队列策略后,Amazon SNS 将继续向订阅队列传递消息。在队列配置不正确时发布到主题的任何消息都将被删除,除非订阅具有死信队列已配置。

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

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

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