如何在 Serverless 应用程序中使用 SQS 队列

阅读时长 5 分钟读完

Serverless 技术是一个正在快速成长的领域,尽管在 Serverless 应用程序中使用消息队列是一个不错的选择,但有关此主题的指导有点不足。 在本文中,我们将探讨如何使用 AWS SQS 队列在 Serverless 应用程序中进行异步通信。 我们将介绍建立 SQS 队列所需的所有组件,以及如何使用 AWS Lambda 和 AWS SNS 来将消息发布到队列。

搭建组件

在我们开始使用 SQS 队列之前,让我们花点时间来构建 SQS 队列所需的 AWS 组件。

SQS 队列

首先,我们需要创建具有适当设置的 SQS 队列。 下面是创建队列的步骤:

  1. 登录 AWS 控制台。
  2. 转到 ECS 控制台。
  3. 选择适当的区域。
  4. 选择“消息服务”。
  5. 单击“创建新队列”。
  6. 配置您的队列。 您可以指定队列的名称,以及队列的标准或 FIFO 属性。 在此示例中,我们将创建一个名为“myqueue”的普通队列。

Lambda 函数

接下来,我们需要创建可以将消息发布到队列的 Lambda 函数。 下面是创建 Lambda 函数的步骤:

  1. 登录 AWS 控制台。
  2. 转到 Lambda 控制台。
  3. 选择适当的区域。
  4. 单击“创建函数”。
  5. 选择“空白函数”。
  6. 指定您的函数名称。
  7. 从下拉列表中选择“Node.js 14.x”作为运行时。
  8. 在“函数代码”部分中,复制并粘贴以下代码:
-- -------------------- ---- -------
----- --- - -------------------
----- --- - --- ----------

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

此 Lambda 函数很简单,只需将事件路由到 SQS 队列。

请注意,您需要将 MY_QUEUE_URL 替换为您创建的 SQS 队列的 URL。

SNS 主题

最后,我们需要创建 SNS 主题,以便 Lambda 函数可以使用 SNS 向队列发布消息。 下面是创建 SNS 主题的步骤:

  1. 登录 AWS 控制台。
  2. 转到 SNS 控制台。
  3. 选择适当的区域。
  4. 单击“创建新主题”。
  5. 指定您的主题名称。
  6. 单击“创建主题”。

创建完 SNS 主题后,请务必将 Lambda 函数配置为通过 SNS 发布消息。

在 Lambda 函数中使用 SNS 发布消息

现在我们已经搭建好所需的组件,下面是如何在 Lambda 函数中使用 SNS 发布消息:

  1. 登录 AWS 控制台。
  2. 转到 Lambda 控制台。
  3. 选择适当的区域。
  4. 打开您创建的 Lambda 函数。
  5. 单击“触发器”。
  6. 单击“添加触发器”,并选择“SNS”。
  7. 选择您创建的 SNS 主题。
  8. 单击“保存”。

这是您需要使用的代码来发布消息到 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

纠错
反馈