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

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

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


猜你喜欢

  • 教你快速掌握 SASS 的导入与异步导入方法

    SASS 是一种比 CSS 更强大、更灵活的 CSS 预处理器。除了能编写更简洁、易于维护的样式代码外,SASS 还支持变量、函数、嵌套规则、继承等高级特性。在实际开发中,有时需要将样式代码拆分成多个...

    6 天前
  • Serverless 应用开发中遇到的常见问题解决方法

    Serverless 是一种运行在云环境中的计算范式,最大的优点是您不必管理服务器或运维应用程序,这样可以减轻开发人员的负担并为企业节省了大量的成本。但是在使用 Serverless 架构时,也会遇到...

    6 天前
  • 使用 Chai 测试 Promise 对象的最佳实践

    Promise 是 JavaScript 中一种特殊的对象,用于异步操作的封装和处理。在前端开发中,Promise 经常用于处理异步请求和数据,因此对 Promise 的测试就显得尤为重要。

    6 天前
  • 快速解决 Express.js 应用程序中访问速度缓慢的问题 1451.Express.js:Express Static 中间件从本地计算机服务 HTML

    在开发 Express.js 应用程序时,我们经常会遇到访问速度缓慢的问题。通常情况下,这是因为 Express.js 应用程序需要处理大量的请求,并加载大量的数据。

    6 天前
  • 使用 Docker Compose 部署基于 GitHub Actions 的 CICD

    介绍 GitHub Actions 是一种用于自动化软件开发工作流程的工具。与其他 CI / CD 工具不同,它无需签署任何合同或购买许可证即可使用。这意味着您可以完全自定义操作,并在GitHub 的...

    6 天前
  • 的确很了解 ES11:全面掌握 BigInt 新特性

    ES11/ES2020 新增了许多有趣的特性,其中 BigInt 引入了一个新的数字类型,可以让开发者更方便地处理大型整数。在本文中,我们将介绍 BigInt 的基本特性,并提供一些实际应用的示例,帮...

    6 天前
  • Next.js 集成 Auth0:最佳实践

    在现代 Web 应用程序开发中,认证和授权是一个最关键而又最困难的部分。为了解决这个问题,Auth0 是一个很好的解决方案,它可以帮助开发人员实现安全的身份验证和授权功能,同时也提供了方便的管理和配置...

    6 天前
  • Sequelize 实现数据备份和恢复的方法与实践

    介绍 Sequelize 是 Node.js 中一个非常受欢迎的 ORM 框架,可以轻松地操作数据库。在应用开发过程中,数据备份和恢复是一项重要的任务,而 Sequelize 提供了一些简单易行的方法...

    6 天前
  • 如何在 Fastify 中使用批处理技术提高性能

    对于一个前端开发者来说,提高性能无疑是开发过程中最重要的目标之一。而在后端开发中,提高性能的方法也有很多。其中,批处理技术是一种非常有效的方法,可以在很大程度上提高应用程序的性能。

    6 天前
  • 在 Nest.js 中使用 GraphQL 实现 RESTful API

    RESTful API 是一种常用的 Web API 设计风格,而GraphQL 也是近年来备受瞩目的前端技术,它可以简化 API 的处理过程,提高请求效率,提供更好的开发体验。

    6 天前
  • TypeScript 中如何跳过某些编译操作

    导语 TypeScript 是一种静态类型的 JavaScript 超集,它可以让你从 JavaScript 编写的代码中获取更多的安全检查和语言功能,使前端开发更加高效。

    6 天前
  • Redux 和 MobX 的优缺点比较及使用场景分析

    在进行前端开发时,我们经常需要管理应用程序的状态。Redux 和 MobX 是两种非常流行的状态管理库。它们都有自己独特的优缺点。本文将比较它们的差异并提供适用场景的分析。

    6 天前
  • 如何正确配置 Webpack+Babel 进行前端打包

    在现代前端开发中,Webpack+Babel 是很常用的组合,Webpack 可以将多个 JavaScript、CSS、图片等文件打包成一个或多个 bundle,Babel 可以将新版 JavaScr...

    6 天前
  • 前端性能优化之测量及评估

    介绍 前端性能是用户体验的重要因素之一,一个快速响应的页面能够让用户更好地享受在线服务。而优化前端性能的过程是一个复杂的过程,需要关注多个因素,并且需要测量和评估每一个因素,以便找到性能瓶颈并采取有效...

    6 天前
  • 使用 Jest 测试 React 应用中的错误处理

    在 React 应用开发过程中,错误处理是一个非常重要也非常常见的问题。在开发过程中,我们需要处理诸如网络请求失败、代码抛出异常等错误。同时,在产品上线后,准确地捕捉并上报错误也非常重要。

    6 天前
  • 如何在 Kubernetes 集群中进行灰度发布

    Kubernetes 是一个流行的容器编排工具,它允许我们管理和扩展容器化应用程序。灰度发布是一种部署策略,它允许我们逐步地将新版本的应用程序引入到生产环境中,以减少潜在故障和风险。

    6 天前
  • GraphQL 与微服务架构:如何集成服务

    本文将讨论 GraphQL 与微服务架构的集成,探讨如何通过 GraphQL 集成微服务架构,提高应用程序的可伸缩性,健壮性和可维护性。我们将详细探讨 GraphQL 解决的问题,提供可伸缩性和可维护...

    6 天前
  • Cypress 测试框架:如何测试 Firebase 身份验证?

    前言 Cypress 是一个流行的前端端到端测试框架,它提供了许多功能来帮助我们编写更健壮的测试用例。Firebase 身份验证是一个常见的使用场景,在本篇文章中,我们将介绍如何使用 Cypress ...

    6 天前
  • 如何优化 JS 的性能,以掌握快速开发

    在前端开发中,JavaScript 是不可或缺的一部分。它使得我们可以在网页上实现各种动态效果和交互行为。但是,由于客户端计算机数据处理能力的限制,JavaScript 可能会在处理较大或复杂的数据集...

    6 天前
  • 无障碍技术进阶:如何创造更好的语音控制体验

    语音控制作为一种主流的无障碍技术,被越来越广泛地应用于各种设备和应用程序中。但是,在实际操作中,许多人发现,语音控制并不总是如他们所愿地运作。本文将为大家介绍一些创造更好的语音控制体验的方法,从而帮助...

    6 天前

相关推荐

    暂无文章