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

您在本教程中使用的 AWS 服务包含在 AWS 免费套餐中。

在 AWS 上发送消息需要拥有账户

创建免费账户

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

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

 


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

tmt_send-receive-async-messages_1a

(单击可缩放)

tmt_send-receive-async-messages_1a

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

tmt_send-receive-async-messages_1b

(单击可缩放)

tmt_send-receive-async-messages_1b

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

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


a.首先,我们将创建一个简单队列,用于存储在商店中所下的订单。在 Queue Name(队列名称)字段中输入 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(消息属性)选项卡,添加与此消息有关的某些可选元数据,以便轻松处理。我们来为此订单添加订单类型。在 Name(名称)字段中输入 Order-Type,在 Type(类型)字段中输入 String 并在 Value(值)字段中输入 Online。单击 Add Attribute(添加属性)。

tmt_send-receive-async-messages_3c

(单击可缩放)

tmt_send-receive-async-messages_3c

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

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(是,删除所选消息)。所选消息将被删除。单击 Close(关闭)。

tmt_send-receive-async-messages_4d

(单击可缩放)

tmt_send-receive-async-messages_4d

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


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

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 SNS 网页 »

深入了解

探索 Amazon Simple Queue Service 的不同类型队列、主要功能和架构。

阅读文档 »

查看实际效果

了解 Capital One 等客户如何使用 Amazon SQS 和 Amazon SNS 分离和扩展应用程序。

观看网络研讨会 »