Serverless 架构已经成为了现代应用程序开发中的一种流行架构。在这种架构中,开发人员不需要关注底层的基础设施,可以专注于业务逻辑的开发。Serverless 架构的一个重要特点是事件驱动,这意味着应用程序中的各个组件可以通过事件进行通信和协作。
在这篇文章中,我们将探讨如何在 Serverless 中实现异步消息传输。我们将介绍 AWS Lambda 和 Amazon Simple Queue Service(SQS)的基础知识,然后演示如何使用它们来实现异步消息传输。
AWS Lambda
AWS Lambda 是一种无服务器计算服务,它允许您在云中运行代码,而无需管理服务器。您只需要编写代码并将其上传到 Lambda,然后 Lambda 将自动扩展并在需要时运行您的代码。Lambda 是一种事件驱动的服务,可以在您的代码运行时触发各种事件。
Lambda 支持多种编程语言,包括 Node.js、Python、Java、C#、Go 和 Ruby。在本文中,我们将使用 Node.js 来编写 Lambda 函数。
Amazon Simple Queue Service
Amazon Simple Queue Service(SQS)是一种完全托管的消息队列服务,它可以在分布式应用程序之间可靠地传输任意数量的消息。SQS 可以与 Lambda 集成,以便在需要时触发 Lambda 函数。
SQS 支持两种类型的队列:标准队列和 FIFO 队列。标准队列提供了最少一次交付保证,这意味着在某些情况下,可能会多次传递消息。FIFO 队列提供了恰好一次交付保证,这意味着每个消息只会传递一次。
实现异步消息传输
现在,我们将演示如何在 Serverless 中实现异步消息传输。我们将创建一个 Lambda 函数,该函数将接收一个事件并将其发送到 SQS 队列。我们还将创建另一个 Lambda 函数,该函数将从队列中获取消息并执行一些操作。
步骤 1:创建 SQS 队列
首先,我们需要创建一个 SQS 队列。我们将使用 AWS 控制台来创建队列。
- 登录 AWS 控制台。
- 转到 SQS 控制台。
- 单击“创建新队列”按钮。
- 选择队列类型。我们将选择标准队列。
- 输入队列名称并单击“创建队列”按钮。
步骤 2:创建 Lambda 函数
接下来,我们需要创建两个 Lambda 函数。第一个函数将接收事件并将其发送到队列中,第二个函数将从队列中获取消息并执行一些操作。
我们将首先创建第一个 Lambda 函数。
- 登录 AWS 控制台。
- 转到 Lambda 控制台。
- 单击“创建函数”按钮。
- 输入函数名称。
- 选择 Node.js 作为运行时。
- 选择“从模板创建”选项。
- 选择“sqs-messages”模板。
- 单击“创建函数”按钮。
现在,我们已经创建了第一个 Lambda 函数。该函数将接收事件并将其发送到 SQS 队列中。
步骤 3:更新 Lambda 函数
我们需要更新第一个 Lambda 函数以将事件发送到 SQS 队列。
- 打开 Lambda 函数。
- 单击“函数代码”选项卡。
- 在“index.js”文件中,找到以下代码:
-- ---- ---------
- 将以下代码添加到“TODO implement”注释下面:
----- --- - ------------------- ----- --- - --- ---------- --------------- - ----- ------- -- - ----- ------ - - ------------ ---------------------- --------- ------------------- -- ----- ---------------------------------- ------ --- --
该代码使用 AWS SDK for JavaScript 来发送消息到 SQS 队列。它将事件转换为 JSON 字符串,并将其作为消息正文发送到队列中。
步骤 4:配置 Lambda 函数
我们需要配置第一个 Lambda 函数以使用正确的环境变量和权限。
- 单击“配置”选项卡。
- 在“环境变量”部分中,添加以下环境变量:
-------- ---- -- ----
- 在“基本设置”部分中,将内存大小设置为 128 MB。
- 在“权限”部分中,单击“添加权限”按钮。
- 选择“SQS”作为服务类型。
- 选择“向现有资源授予权限”选项。
- 选择您创建的 SQS 队列。
- 单击“添加权限”按钮。
现在,第一个 Lambda 函数已经配置完成。
步骤 5:创建第二个 Lambda 函数
我们将创建第二个 Lambda 函数。该函数将从 SQS 队列中获取消息并执行一些操作。
- 登录 AWS 控制台。
- 转到 Lambda 控制台。
- 单击“创建函数”按钮。
- 输入函数名称。
- 选择 Node.js 作为运行时。
- 选择“空白函数”模板。
- 单击“创建函数”按钮。
现在,我们已经创建了第二个 Lambda 函数。
步骤 6:更新 Lambda 函数
我们需要更新第二个 Lambda 函数以从 SQS 队列中获取消息并执行一些操作。
- 打开 Lambda 函数。
- 单击“函数代码”选项卡。
- 在“index.js”文件中,找到以下代码:
-- ---- ---------
- 将以下代码添加到“TODO implement”注释下面:
----- --- - ------------------- ----- --- - --- ---------- --------------- - ----- ------- -- - ----- ------ - - --------- -------------------- -------------------- -- ------------------ --- ---------------- - -- ----- ---- - ----- ------------------------------------- -- --------------- -- -------------------- --- -- - ------ --- - ----- ------- - ----------------- -- ----- ------- ---- --------- ---- --- ------- ----- ------------------- --------- -------------------- -------------- --------------------- ------------- ------ --- --
该代码使用 AWS SDK for JavaScript 从 SQS 队列中接收消息。它将等待队列中的消息,并在找到消息时将其从队列中删除。然后,它将执行一些操作,这里我们只是打印消息的正文。
步骤 7:配置 Lambda 函数
我们需要配置第二个 Lambda 函数以使用正确的环境变量和权限。
- 单击“配置”选项卡。
- 在“环境变量”部分中,添加以下环境变量:
-------- ---- -- ----
- 在“基本设置”部分中,将内存大小设置为 128 MB。
- 在“权限”部分中,单击“添加权限”按钮。
- 选择“SQS”作为服务类型。
- 选择“向现有资源授予权限”选项。
- 选择您创建的 SQS 队列。
- 单击“添加权限”按钮。
现在,第二个 Lambda 函数已经配置完成。
步骤 8:测试函数
现在,我们已经创建了两个 Lambda 函数并配置了正确的环境变量和权限。我们可以测试这些函数以确保它们可以正常工作。
- 打开第一个 Lambda 函数。
- 单击“测试”按钮。
- 输入以下事件:
- ---------- ------ ------- -
- 单击“创建”按钮。
- 打开第二个 Lambda 函数。
- 单击“监控”选项卡。
- 找到最新的日志事件,并查看其输出。
您应该看到以下输出:
----- ------
这表明第二个 Lambda 函数已经成功地从 SQS 队列中获取了消息并执行了一些操作。
结论
在本文中,我们探讨了如何在 Serverless 中实现异步消息传输。我们介绍了 AWS Lambda 和 Amazon Simple Queue Service(SQS)的基础知识,并演示了如何使用它们来实现异步消息传输。我们还提供了示例代码来帮助您更好地理解这些概念。希望这篇文章能够帮助您更好地理解 Serverless 架构和事件驱动的编程模型。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67271c432e7021665e1c2e07