Node.js 中的 Pub/Sub2025 年 3 月 1 日 | 阅读 4 分钟 Pub/Sub 简介在发布/订阅 (pub/sub) 通信范例中,发送者(发布者)不会直接将消息发送给特定的接收者(订阅者)。相反,它们会将消息发布到一个频道,订阅者会收到发布的通知。因此,通信模式变得更加灵活和可扩展。消息的创建和消费是分离的。这种方法在实时应用程序、微服务架构和分布式系统中非常有用。 Node.js 中的 Pub/Sub由于 Node.js 的事件驱动、非阻塞 I/O 方法,Pub/Sub 范例非常适合 Node.js。Redis、MQTT 原生 Node.js 模块以及 RabbitMQ 和 Google Cloud Pub/Sub 等消息代理是使 Node.js 的 Pub/Sub 更易于使用的框架和技术。Node.js 的 EventEmitter 原生集成在 Node.js 框架中,通过 events 模块实现。它可以用来实现一个简单的 Pub/Sub 方法。这是一个简单的例子 输出 ![]() 说明在这个例子中,有两个订阅者正在等待 "message" 事件的发生。发布者发送一个 "message" 事件,两个订阅者都会处理并接收到它。 Redis 发布/订阅 (Pub/Sub) 消息由内存数据结构存储 Redis 提供支持。由于其有效性和易用性,它是 Pub/Sub 部署的一个流行选择。 在 Node.js 中,如果没有 redis 包,则无法使用Redis Pub/Sub。使用 npm install redis 安装。Redis Pub/Sub 示例如下:const redis = require('redis'); 输出 ![]() 在您的示例中,发布者将消息发送到订阅者正在监听的同一频道“my_channel”。收到消息后,订阅者会将其记录下来。 MQTT 发布/订阅MQTT (Message Queuing Telemetry Transport) 是一种针对物联网和低带宽环境的轻量级消息协议。它为 Node.js 提供了许多实现,并且在 Pub/Sub 方面表现良好。 如果您想在 Node.js 中使用 MQTT,则需要 MQTT 包。 使用 npm 安装 MQTT 这是一个 MQTT 发布/订阅示例 输出 ![]() 说明在此示例中,订阅者连接到 MQTT 代理并订阅 'my_topic'。发布者将消息发送到同一主题,订阅者接收并记录下来。 RabbitMQ 发布/订阅RabbitMQ 是一个强大的消息代理,通过其交换器和队列模型支持发布/订阅。RabbitMQ 的灵活性和可靠性使其成为企业应用程序中实现发布/订阅的热门选择。 要在 Node.js 中使用 RabbitMQ,您需要 amqplib 包。 这是一个 RabbitMQ 发布/订阅示例 输出 订阅者启动并等待消息。它会记录它正在等待消息的队列名称。 ![]() <unique_id> 将是 RabbitMQ 为临时队列生成的唯一标识符。 发布者发送消息并记录下来。 ![]() 不久之后,订阅者会收到消息并记录下来。 ![]() 在此实例中,消息由发布者发送到名为“logs”的交换器,消息由订阅者从该交换器接收。'fanout' 交换器类型确保消息能到达每个订阅者。 Google Cloud Pub/Sub您可以使用 GoogleCloud Pub/Sub 来大规模部署 Pub/Sub。这是一种完全托管的消息服务,旨在优先考虑全球分发和可靠性。 要使用 Node.js 中的 Google Cloud Pub/Sub,需要 @google-cloud/pubsub 包。 这是一个 Google Cloud Pub/Sub 示例 输出 ![]() 说明在此实例中,订阅者侦听一个主题上的订阅,发布者已向该主题发送了一条消息。一旦消息发布,订阅者就会收到并处理它。 |
引言 在网站开发过程中,管理和操作大量数据的最佳方法对良好的用户体验至关重要。分页是用于解决此问题的常用技术之一。什么是分页?分页可以清理大量复杂数据并将其拆分……
5 分钟阅读
Handlebars 是一种流行的模板引擎,也称为 HBS,在 Web 开发领域中使用。通过模板引擎,开发人员可以通过将数据注入包含预定义格式的模板来生成动态 HTML 页面。Handlebars 证明自己是一个基础但有效的模板平台,...
阅读 4 分钟
当使用 WebAssembly 系统接口 (WASI) 时,调用 WebAssembly 实例的入口点是 Node.js 方法 wasi.start(instance) 的职责。特别是对于那些设计有预设入口点的应用程序,例如编译为 WebAssembly 的 C/C++ 程序,此函数...
5 分钟阅读
在本文中,您将学习 Node.js 中的 tracingChannel.traceCallback() 函数,包括其语法、参数、示例以及许多其他内容。什么是 Node.js 中的 tracingChannel.traceCallback() 函数?Node.js 中的 tracingChannel.traceCallback 函数是 Node.js 追踪 API 的一个子集,该 API 包含用于数据采集和分析的功能...
7 分钟阅读
在本文中,我们将讨论 Node.js 和 Grails 之间的区别。在讨论它们的区别之前,我们必须了解 Node.js 和 Grails。什么是 Node.js?Node.js 是一个基于 Chrome V8 的事件驱动 I/O 服务器端 JavaScript 环境。在 Node.js 之前,一种用于客户端和服务器端的常用语言...
阅读 3 分钟
在微服务架构中,API 网关负责所有面向客户端的与后端服务的通信。它具有监控、速率限制、缓存、身份验证和请求路由等基本功能。它还促进了使客户端能够与多个服务通信的任务,从而降低了复杂性...
阅读 6 分钟
Scala 和 Node.js 是软件开发领域知名的技术,但它们的应用、目标用户和功能集有所不同。在本文中,我们将讨论 Scala 和 Node.js 之间的区别。在讨论它们的区别之前,我们必须了解 Scala 和 Node.js。什么是 Scala?……
5 分钟阅读
在本文中,我们将讨论 Node.js 和 Redwood.js 之间的区别。在讨论它们之间的区别之前,我们必须了解 Node.js 和 Redwood.js 的特性。什么是 Node.js?Node.js 是基于 Chrome V8 的事件驱动 I/O 服务器端 JavaScript 环境。在 Node.js 之前,一种常用的语言是...
阅读 4 分钟
在 Web 开发生态系统中进行比较时,认识到 Node.js 和 Keystone.js 之间的区别很重要。借助运行时环境,Node.js 开发人员可以在服务器端执行 JavaScript 代码,这为创建各种...提供了灵活性。
阅读9分钟
许多开发人员喜欢 Node.js,因为它具有异步和非阻塞 I/O 的特性,并且允许创建可扩展的应用程序。其重要的包是基于灵活的图像处理库 GraphicsMagick (GM)。在各种函数中,threshold() 函数执行二值化...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India