使用各个组件 (每个组件执行一个离散函数) 构建应用程序是提高可扩展性和可靠性的最佳实践。借助消息队列,您可以在任何数量的应用程序组件之间发送、存储和接收消息,而不会丢失消息,也不需要其他服务保持始终可用。

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

什么是消息队列?

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

免费试用 Amazon SQS

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

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


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

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

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

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

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

您还可以阅读我们的博客:Using Python and Amazon SQS FIFO Queues to Preserve Message SequencingHow the Amazon SQS FIFO API WorksFIFO Queues with Exactly-Once Processing & Deduplication

死信队列可以接收其他队列发来的未成功处理的消息。这便于将此类消息放在一边以进行深入检测,而不会妨碍队列处理或将 CPU 周期耗费在可能永远无法成功处理的消息上。

要了解有关死信队列的更多信息,请阅读我们的博客 Using Amazon SQS Dead-Letter Queues to Control Message Failure。要了解如何在 Amazon SQS 中使用死信队列,请参阅我们的开发人员指南

通常情况下,您可以为消息分配优先级,以确定要在队列中添加该消息的位置,从而确保优先级较高的消息位于队列前端并得到优先处理。

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

毒丸消息是可接收但无法处理的特殊消息。这是一种用于通知处理器终止工作以使其不再等待新输入的机制,其原理类似于在客户端/服务器模型中关闭套接字。

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

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

免费试用
blank