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

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

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


猜你喜欢

  • 在 React 中如何进行高效的异常处理?

    React 是一个流行的前端 UI 库,它为开发人员提供了构建 Web 应用程序所需的工具和组件。当我们开发 React 应用时,异常处理是必不可少的一部分。在本文中,我们将探讨在 React 中如何...

    12 天前
  • 对于响应式设计的研究:使用 CSS media queries 进行适配

    在当今移动设备时代,网站必须具有响应式设计,以在不同设备上获得最佳用户体验。响应式设计是一种智能的方式,它能够通过 CSS media queries 轻松适配不同尺寸和分辨率的屏幕。

    12 天前
  • ES9 提案:AbortController

    ES9 提案中最受欢迎的一个功能是 AbortController。AbortController 允许我们在异步任务执行时来取消它们,从而提高应用程序的可靠性和稳定性。

    12 天前
  • Material Design 中 TextInputEditText 控件使用技巧

    在现代的移动和 Web 应用中,表单是不可或缺的组成部分,TextInputEditText 控件是 Material Design 设计规范所提供的输入框组件。它不仅有着美观的外观,而且还具有很好的...

    12 天前
  • 如何在 ESLint 中忽略代码块

    在前端开发的过程中,需要使用 ESLint 来进行代码检查和规范,但也经常会遇到需要忽略一些特定的代码块的情况,比如 generated code、debugger 语句和 console.log 输...

    12 天前
  • 使用 Enzyme 进行 React Native 布局和 UI 测试

    React Native 是一个用于构建移动应用的框架,其提供了一种将 JavaScript 代码转换为原生应用的方式。Enzyme 是一个 React 测试工具,它能够让我们轻松地测试 React ...

    12 天前
  • 使用 Fastify 和 MySQL 构建 Node.js API

    简介 Fastify 是一个基于 Express 和 Hapi 的 Node.js 框架。它的目标是提供更好的性能和更小的开销。MySQL 是一种流行的关系型数据库,长期以来一直是 Web 开发的重要...

    12 天前
  • 如何在 ES8 中编写高效的异步代码

    在 ES8 中,异步编程已经变得更加易于管理,同时也更加高效。在本文中,我们将分享如何编写高效的异步代码,这包括了 ES8 中的一些新特性,如 async/await 和 Promise。

    12 天前
  • Docker 容器中运行 Java 应用程序的详细步骤

    简介 随着云计算和微服务的发展,Docker 已经变成了比较流行的容器化解决方案。Docker 的诞生和发展,极大地改善了软件开发和发布的方式,使其变得更加高效和可靠。

    12 天前
  • 解决 Hapi 框架中 SQL 注入问题

    什么是 SQL 注入问题 在进行网站开发过程中,我们一般会使用数据库来存储数据。在使用 SQL 语言进行数据库操作时,如果输入的数据不加正确的验证和过滤,会导致恶意攻击者利用输入数据对数据库进行非法操...

    12 天前
  • 如何使用 Socket.io 实现基于房间的群聊

    介绍 Socket.io 是一个基于 Node.js 的实时网络库,可以实现客户端和服务器之间的双向通信。我们可以使用 Socket.io 来开发实时聊天程序,其中包括基于房间的群聊。

    12 天前
  • 如何测试你的 RESTful API

    RESTful API 是现代 Web 开发的基础,掌握如何测试 RESTful API 是前端开发者必备的技能之一。在本文中,我们将学习如何测试 RESTful API,并提供一些测试 RESTfu...

    12 天前
  • ES2020 中 Nullish Coalescing 操作符的使用方法

    在 JavaScript 的开发中,我们经常需要处理变量的空值问题。以往我们使用的方法是利用逻辑运算符 || 和条件表达式 ? : 来判断变量是否为空,但这些方法会存在一些意料之外的问题。

    12 天前
  • Mocha 测试框架中如何进行 UI 自动化测试

    UI 自动化测试在前端开发中占据了极其重要的地位,它可以帮助我们快速反馈代码的正确性,避免出现不必要的 Bug 和问题,提升前端开发的效率和质量。在 Mocha 测试框架中,我们可以使用一些优秀的 U...

    12 天前
  • 如何使用 Kubernetes 进行服务发现和负载均衡

    什么是 Kubernetes Kubernetes 是一个开源的容器编排系统,可以自动化地管理应用程序的部署、扩展和运行。Kubernetes 提供了一种方式,通过在容器编排中引入抽象和管理机制来解决...

    12 天前
  • 借助 jquery-easeljs-plugin 实现响应式设计的游戏制作

    响应式设计是指网站或应用程序能够适应多种设备的屏幕尺寸和分辨率,提供一致的用户体验。而游戏制作中,响应式设计也是至关重要的一环。在本文中,我们将介绍如何利用 jquery-easeljs-plugin...

    12 天前
  • Sequelize 中如何使用分布式缓存 Redis

    在大型应用程序中,数据库查询往往会成为瓶颈,尤其是在高并发量的情况下。为了缓解这种情况,许多开发人员经常使用缓存来显著提高应用程序的性能。Redis 是一款流行的内存数据库,它被广泛用于分布式缓存。

    12 天前
  • Vue.js 自定义指令指南

    Vue.js 是一款流行的前端框架,广泛应用于各类 Web 应用中。Vue.js 附带了多种内置指令,用于在 HTML 元素上绑定行为和动态属性。对于复杂或定制化的需求,Vue.js 允许用户自定义指...

    12 天前
  • 如何快速入门使用 GraphCMS Headless CMS

    如果您是一名前端开发者或者网站管理员,那么您可能已经听说过 Headless CMS 的概念。Headless CMS 是一种将内容和显示分离的内容管理系统。这种系统使得你可以将内容保存在一个地方,并...

    12 天前
  • 避免在 ESLint 中出现重复的代码警告

    在前端开发中,为了使代码风格更加规范一致,我们通常会使用 ESLint 工具来进行代码检查,以及质量保证。然而,在使用 ESLint 时,我们可能会遇到一些重复代码的警告,这些警告是我们需要注意的,因...

    12 天前

相关推荐

    暂无文章