(使用Amazon Simple Queue Service [SQS] 在分布式应用程序间发送消息)

在本教程中,您将学习如何使用 Amazon Simple Queue Service (Amazon SQS) 设置异步消息收发。Amazon SQS 是允许应用程序组件在云中通信的一种 AWS 服务。您将使用 Amazon SQS 控制台创建和配置消息队列,发送消息,接收和删除此消息,然后删除此队列。

本教程使用的 AWS 服务涵盖在 AWS 免费套餐内。

在 AWS 上收发消息需要有账户

创建免费账户

AWS 免费套餐包含 1000000 个 Amazon Simple Queue Service 请求。

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

 


a. 当您单击此处之后,AWS 管理控制台将在新的浏览器窗口中打开,因此您可以将本分步指南保持打开状态。  当此屏幕加载后,请输入您的用户名和密码以便开始操作。然后,在搜索栏中输入 queue 并选择 Simple Queue Service 以打开控制台。

tmt_send-receive-async-messages_1a

(单击放大图片)

tmt_send-receive-async-messages_1a

b. 如果 SQS 控制台登录页面显示 (如屏幕截图所示),请单击立即开始使用。如果您没有看到此页面,请跳至下一步。

tmt_send-receive-async-messages_1b

(单击放大图片)

tmt_send-receive-async-messages_1b

在此步骤中,您将创建和配置一个 Amazon SQS 队列。队列是一种可靠且高度可扩展的缓冲区,用于当消息在分布式应用程序或微服务间传送时存储它们。队列可以帮助应用程序解除耦合、连接微服务、批量处理任务或存储通知。

在本教程中,我们的使用案例将模拟存储从电子商务应用程序传入的订单。


a. 首先,我们将创建一个简单队列,用于存储在商店中所下的订单。在队列名称字段中输入 Orders

tmt_send-receive-async-messages_2a

(单击放大图片)

tmt_send-receive-async-messages_2a

b. 在本教程中,我们不需要遵循严格的顺序,因此我们不会对队列类型进行任何更改。使 Standard Queue (标准队列) 处于选中状态。

tmt_send-receive-async-messages_2b

(单击放大图片)

tmt_send-receive-async-messages_2b

c. 您可以配置您的队列,以修改保留期、消息大小上限和发送延迟等设置。在本教程中,我们将保留默认参数。选择 Quick-Create Queue (快速创建队列)

tmt_send-receive-async-messages_2c

(单击放大图片)

tmt_send-receive-async-messages_2c

d. 您的新队列随即将会创建并在队列列表中处于选中状态。

tmt_send-receive-async-messages_2d

(单击放大图片)

tmt_send-receive-async-messages_2d

创建队列后,便可以从在线商店接收消息,以捕获每个新订单的详细信息。


a. 已在列表中选择您的队列。在 Queue Actions (队列操作) 中,选择 Send a Message (发送一条消息)Send a Message to Orders (发送消息至订单) 对话框随即显示。

tmt_send-receive-async-messages_3a

(单击放大图片)

tmt_send-receive-async-messages_3a

b. Send a Message to Orders (发送消息至订单) 对话框随即显示。在“Message Body”(消息正文) 选项卡上,输入以下表示示例订单的文本:

1 x Widget @ $29.99 USD
2 x Widget Cables @ $4.99

tmt_send-receive-async-messages_3b

(单击放大图片)

tmt_send-receive-async-messages_3b

c. 选择 Message Attributes (消息属性) 选项卡,添加与此消息有关的某些可选元数据,以便轻松处理。我们来为此订单添加订单类型。在名称字段中输入 Order-Type,在类型字段中输入 String,并在字段中输入 Online。单击 Add Attribute (添加属性)

tmt_send-receive-async-messages_3c

(单击放大图片)

tmt_send-receive-async-messages_3c

d. 要立即发送消息,请单击发送消息Send a Message to Orders (发送消息至订单) 对话框中随即会显示消息已发送的确认信息。单击关闭

tmt_send-receive-async-messages_3d

(单击放大图片)

tmt_send-receive-async-messages_3d

将消息发送到队列中后,其他应用程序可以从队列中使用该消息并对其进行处理。在本例中,您只需检索消息以查看订单,然后将其删除即可。


a. 确保在队列列表中选中您的 Orders 队列。接下来,从 Queue Actions (队列操作) 中,选择 View/Delete Messages (查看/删除消息)

tmt_send-receive-async-messages_4a

(单击放大图片)

tmt_send-receive-async-messages_4a

b. View/Delete Messages in Orders (在订单中查看/删除消息) 对话框随即显示。当您从队列中请求消息时,您不必指定请求具体消息。而应指定要检索的最大消息数量(最多 10 条)。

单击 Start Polling for messages (开始轮询消息),从队列中检索消息。

tmt_send-receive-async-messages_4b

(单击放大图片)

tmt_send-receive-async-messages_4b

c. 消费者收到并处理消息后,您可将其从队列中删除。选择要删除的消息,然后选择 Delete 1 Message (删除 1 条消息)

tmt_send-receive-async-messages_4c

(单击放大图片)

tmt_send-receive-async-messages_4c

d. Delete Messages (删除消息) 对话框随即显示。选中消息旁边的复选框,然后单击 Yes, Delete Checked Messages (是,删除选中的消息)。选定的消息已删除。选择关闭

tmt_send-receive-async-messages_4d

(单击放大图片)

tmt_send-receive-async-messages_4d

当您不再需要使用 Amazon SQS 队列后,我们建议您最好删除该队列。


a. 在队列列表中,选择 Orders 队列。然后,从 Queue Actions (队列操作) 中,选择 Delete Queue (删除队列)

tmt_send-receive-async-messages_5a

(单击放大图片)

tmt_send-receive-async-messages_5a

b. Delete Queues (删除队列) 对话框随即显示。您仍然可以删除您的队列,即使队列中仍然有消息也可以。选择 Yes, Delete Queue (是,删除队列)。队列将被删除。

tmt_send-receive-async-messages_5b

(单击以缩放)

tmt_send-receive-async-messages_5b

您已创建了第一个 Amazon Simple Queue Service (Amazon SQS) 消息队列,向队列发送了消息,检索并删除了消息,然后删除了队列。现在,您可以使用 Amazon SQS 队列在分布式应用程序组件和微服务之间存储和移动数据。

您已经学习了如何使用 Amazon Simple Queue Service 发送和接收消息,现在请选择以下任一选项来进一步提高您的消息收发技能。

了解更多

了解有关 Amazon Web Services (AWS) 上消息队列的功能、组件和使用案例的概况。访问 Amazon SQS 网页 »

深入了解

探索 Amazon Simple Queue Service 中不同类型的队列、主要功能和架构。阅读文档 »

观看操作演示

了解 Capital One 等客户如何使用 Amazon SQS 和 Amazon SNS 为应用程序解除耦合和扩展应用程序。观看网络研讨会 »