使用功能各不相同的单独组件构建应用程序,是有助于提高可扩展性和可靠性的最佳实践方案。借助消息队列,您可以在任何数量的应用程序组件之间发送、存储和接收消息,而不会丢失消息,也不需要其他服务保持始终可用。

消息队列提供了多种选项,让您可以指定消息在该队列中的传送方式以及安全性和描述方式。此外,您还可以采用扇出设计模式将队列与发布/订阅消息收发结合起来。

什么是消息队列?

只需三个简单的命令即可开始使用 Amazon Simple Queue Service (SQS)。

免费试用 Amazon SQS

AWS 免费套餐包含 100 万个 Amazon Simple Queue Service (SQS) 请求。

查看 AWS 免费套餐详细信息 »


大多数消息队列都提供用于检索消息的推送和拉取选项。拉取是指不断查询队列以获取新消息。推送是指系统在有可用消息时通知用户(也称为发布/订阅消息收发)。您还可以使用长时间轮询,以允许在完成拉取之前等待指定的时间量,以等待新消息到达。

许多消息队列都支持为消息设置特定的传送时间。如果需要所有消息都有共同的延迟,可以设置延迟队列。

消息队列可以存储消息的多个副本,以实现冗余和高可用性,并且在通信失败或错误的情况下重新发送消息,以确保其至少传送一次。

在不容许重复的情况下,FIFO (先进先出) 消息队列会通过自动筛选重复来确保每个消息均精确地传输了一次 (且只有一次)。

在这些队列中,最早的(或第一个)条目(有时称为队列的“头”)最先处理。要了解有关 Amazon SQS FIFO 队列的更多信息,请参阅开发人员指南

您还可以阅读我们的博客:使用 Python 和 Amazon SQS FIFO 队列来保留消息序列Amazon SQS FIFO API 的工作原理以及具有确切一次处理和重复数据消除功能的 FIFO 队列。

死信队列指的是其他队列可以向其发送无法被成功处理的消息的队列。这样就可以很容易地将其放在一边进行进一步检查,而不会阻塞队列处理,或在可能永远不会成功使用的消息上花费 CPU 周期。

要进一步了解关于死信队列的信息,请阅读我们的博客,使用 Amazon SQS 死信队列来管理消息失败。要了解如何在 Amazon SQS 中使用死信队列,请参阅我们的开发人员指南

大多数消息队列都会提供尽力顺序,确保消息大致按其发送的顺序进行传送,且消息至少传送一次。

毒丸是一种特殊的消息,可以被接收,但不能被处理。这种机制可用于向使用者发出结束工作的信号,使其不再等待新的输入,类似于在客户端/服务器模型中关闭套接字。

消息队列将对尝试访问队列的应用程序进行身份验证,并允许您使用加密来加密通过网络传输以及在队列中传输的消息。要了解有关 AWS 上的队列安全性的更多信息,请阅读我们的博客 Server-Side Encryption for Amazon Simple Queue Service (SQS)。您还可以参阅我们的开发人员指南,了解有关 Amazon SQS 安全功能的更多信息。

只需三个简单的命令即可开始免费试用。