Serverless 技术是一个正在快速成长的领域,尽管在 Serverless 应用程序中使用消息队列是一个不错的选择,但有关此主题的指导有点不足。 在本文中,我们将探讨如何使用 AWS SQS 队列在 Serverless 应用程序中进行异步通信。 我们将介绍建立 SQS 队列所需的所有组件,以及如何使用 AWS Lambda 和 AWS SNS 来将消息发布到队列。
搭建组件
在我们开始使用 SQS 队列之前,让我们花点时间来构建 SQS 队列所需的 AWS 组件。
SQS 队列
首先,我们需要创建具有适当设置的 SQS 队列。 下面是创建队列的步骤:
- 登录 AWS 控制台。
- 转到 ECS 控制台。
- 选择适当的区域。
- 选择“消息服务”。
- 单击“创建新队列”。
- 配置您的队列。 您可以指定队列的名称,以及队列的标准或 FIFO 属性。 在此示例中,我们将创建一个名为“myqueue”的普通队列。
Lambda 函数
接下来,我们需要创建可以将消息发布到队列的 Lambda 函数。 下面是创建 Lambda 函数的步骤:
- 登录 AWS 控制台。
- 转到 Lambda 控制台。
- 选择适当的区域。
- 单击“创建函数”。
- 选择“空白函数”。
- 指定您的函数名称。
- 从下拉列表中选择“Node.js 14.x”作为运行时。
- 在“函数代码”部分中,复制并粘贴以下代码:
-- -------------------- ---- ------- ----- --- - ------------------- ----- --- - --- ---------- --------------- - ----- ------- -- - ----- ------ - - --------- --------------- ------------ ---------------------- -- ------ ---------------------------------- --
此 Lambda 函数很简单,只需将事件路由到 SQS 队列。
请注意,您需要将 MY_QUEUE_URL 替换为您创建的 SQS 队列的 URL。
SNS 主题
最后,我们需要创建 SNS 主题,以便 Lambda 函数可以使用 SNS 向队列发布消息。 下面是创建 SNS 主题的步骤:
- 登录 AWS 控制台。
- 转到 SNS 控制台。
- 选择适当的区域。
- 单击“创建新主题”。
- 指定您的主题名称。
- 单击“创建主题”。
创建完 SNS 主题后,请务必将 Lambda 函数配置为通过 SNS 发布消息。
在 Lambda 函数中使用 SNS 发布消息
现在我们已经搭建好所需的组件,下面是如何在 Lambda 函数中使用 SNS 发布消息:
- 登录 AWS 控制台。
- 转到 Lambda 控制台。
- 选择适当的区域。
- 打开您创建的 Lambda 函数。
- 单击“触发器”。
- 单击“添加触发器”,并选择“SNS”。
- 选择您创建的 SNS 主题。
- 单击“保存”。
这是您需要使用的代码来发布消息到 SNS 主题:
-- -------------------- ---- ------- ----- --- - ------------------- ----- --- - --- ---------- --------------- - ----- ------- -- - ----- ------ - - --------- --------------- -------- ---------------------- -- ------ ------------------------------ --
其中,您需要将 MY_TOPIC_ARN 替换为您创建的 SNS 主题的 ARN。
从 SQS 队列中读取消息
现在,我们已经能够将消息发布到队列中。 接下来,让我们探讨如何从 SQS 队列中读取消息。
-- -------------------- ---- ------- ----- --- - ------------------- ----- --- - --- ---------- --------------- - ----- -- -- - ----- ------ - - --------- --------------- -------------------- --- -- ----- --- - ----- ------------------------------------- ----- - -------- - - ---- ----- -------- - ------------------ --------- -- - ----- ------ - ------------------------- -- -- --------- ---- --- ------ -------------------- ----- ------------ - - --------- --------------- -------------- ---------------------- -- ------ ------------------------------------------ --- ------ ---------------------- --
此 Lambda 函数很简单,只需从队列中读取最多 10 条消息并将其记录到日志中。 最后,我们将删除队列中的消息。
请注意,您需要将 MY_QUEUE_URL 替换为您创建的 SQS 队列的 URL。
结论
在本篇文章中,我们已经详细介绍了如何在 Serverless 应用程序中使用 SQS 队列。 我们通过创建 SQS 队列,Lambda 函数和 SNS 主题来探讨了如何将消息发布到队列中,以及如何从队列中读取消息。 我们提供了详细代码示例,以帮助您实现此集成。 我们希望本文对您有所帮助,让您的 Serverless 应用程序更加高效。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671d9cc09babaf620fb73252