如何在 Serverless 中实现异步消息传输

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 控制台来创建队列。

  1. 登录 AWS 控制台。
  2. 转到 SQS 控制台。
  3. 单击“创建新队列”按钮。
  4. 选择队列类型。我们将选择标准队列。
  5. 输入队列名称并单击“创建队列”按钮。

步骤 2:创建 Lambda 函数

接下来,我们需要创建两个 Lambda 函数。第一个函数将接收事件并将其发送到队列中,第二个函数将从队列中获取消息并执行一些操作。

我们将首先创建第一个 Lambda 函数。

  1. 登录 AWS 控制台。
  2. 转到 Lambda 控制台。
  3. 单击“创建函数”按钮。
  4. 输入函数名称。
  5. 选择 Node.js 作为运行时。
  6. 选择“从模板创建”选项。
  7. 选择“sqs-messages”模板。
  8. 单击“创建函数”按钮。

现在,我们已经创建了第一个 Lambda 函数。该函数将接收事件并将其发送到 SQS 队列中。

步骤 3:更新 Lambda 函数

我们需要更新第一个 Lambda 函数以将事件发送到 SQS 队列。

  1. 打开 Lambda 函数。
  2. 单击“函数代码”选项卡。
  3. 在“index.js”文件中,找到以下代码:
-- ---- ---------
  1. 将以下代码添加到“TODO implement”注释下面:
----- --- - -------------------
----- --- - --- ----------

--------------- - ----- ------- -- -
  ----- ------ - -
    ------------ ----------------------
    --------- -------------------
  --

  ----- ----------------------------------

  ------ ---
--

该代码使用 AWS SDK for JavaScript 来发送消息到 SQS 队列。它将事件转换为 JSON 字符串,并将其作为消息正文发送到队列中。

步骤 4:配置 Lambda 函数

我们需要配置第一个 Lambda 函数以使用正确的环境变量和权限。

  1. 单击“配置”选项卡。
  2. 在“环境变量”部分中,添加以下环境变量:
-------- ---- -- ----
  1. 在“基本设置”部分中,将内存大小设置为 128 MB。
  2. 在“权限”部分中,单击“添加权限”按钮。
  3. 选择“SQS”作为服务类型。
  4. 选择“向现有资源授予权限”选项。
  5. 选择您创建的 SQS 队列。
  6. 单击“添加权限”按钮。

现在,第一个 Lambda 函数已经配置完成。

步骤 5:创建第二个 Lambda 函数

我们将创建第二个 Lambda 函数。该函数将从 SQS 队列中获取消息并执行一些操作。

  1. 登录 AWS 控制台。
  2. 转到 Lambda 控制台。
  3. 单击“创建函数”按钮。
  4. 输入函数名称。
  5. 选择 Node.js 作为运行时。
  6. 选择“空白函数”模板。
  7. 单击“创建函数”按钮。

现在,我们已经创建了第二个 Lambda 函数。

步骤 6:更新 Lambda 函数

我们需要更新第二个 Lambda 函数以从 SQS 队列中获取消息并执行一些操作。

  1. 打开 Lambda 函数。
  2. 单击“函数代码”选项卡。
  3. 在“index.js”文件中,找到以下代码:
-- ---- ---------
  1. 将以下代码添加到“TODO implement”注释下面:
----- --- - -------------------
----- --- - --- ----------

--------------- - ----- ------- -- -
  ----- ------ - -
    --------- --------------------
    -------------------- --
    ------------------ ---
    ---------------- -
  --

  ----- ---- - ----- -------------------------------------

  -- --------------- -- -------------------- --- -- -
    ------ ---
  -

  ----- ------- - -----------------

  -- ----- ------- ---- --------- ---- --- -------

  ----- -------------------
    --------- --------------------
    -------------- ---------------------
  -------------

  ------ ---
--

该代码使用 AWS SDK for JavaScript 从 SQS 队列中接收消息。它将等待队列中的消息,并在找到消息时将其从队列中删除。然后,它将执行一些操作,这里我们只是打印消息的正文。

步骤 7:配置 Lambda 函数

我们需要配置第二个 Lambda 函数以使用正确的环境变量和权限。

  1. 单击“配置”选项卡。
  2. 在“环境变量”部分中,添加以下环境变量:
-------- ---- -- ----
  1. 在“基本设置”部分中,将内存大小设置为 128 MB。
  2. 在“权限”部分中,单击“添加权限”按钮。
  3. 选择“SQS”作为服务类型。
  4. 选择“向现有资源授予权限”选项。
  5. 选择您创建的 SQS 队列。
  6. 单击“添加权限”按钮。

现在,第二个 Lambda 函数已经配置完成。

步骤 8:测试函数

现在,我们已经创建了两个 Lambda 函数并配置了正确的环境变量和权限。我们可以测试这些函数以确保它们可以正常工作。

  1. 打开第一个 Lambda 函数。
  2. 单击“测试”按钮。
  3. 输入以下事件:
-
  ---------- ------ -------
-
  1. 单击“创建”按钮。
  2. 打开第二个 Lambda 函数。
  3. 单击“监控”选项卡。
  4. 找到最新的日志事件,并查看其输出。

您应该看到以下输出:

----- ------

这表明第二个 Lambda 函数已经成功地从 SQS 队列中获取了消息并执行了一些操作。

结论

在本文中,我们探讨了如何在 Serverless 中实现异步消息传输。我们介绍了 AWS Lambda 和 Amazon Simple Queue Service(SQS)的基础知识,并演示了如何使用它们来实现异步消息传输。我们还提供了示例代码来帮助您更好地理解这些概念。希望这篇文章能够帮助您更好地理解 Serverless 架构和事件驱动的编程模型。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67271c432e7021665e1c2e07