news 2026/4/17 18:47:13

Nodejs订阅nats主题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nodejs订阅nats主题

我来帮您了解 Node.js 中订阅 NATS 主题的相关信息,包括基本概念、实现方法和示例代码。
我来为您详细讲解 Node.js 中订阅 NATS 主题的相关知识,包括基础用法和实际示例。
安装 NATS 客户端
npm install nats

基础订阅示例
const { connect, StringCodec } = require('nats');

(async () => {
// 连接到 NATS 服务器
const nc = await connect({ servers: "nats://localhost:4222" });
const sc = StringCodec();

// 订阅主题
const sub = nc.subscribe("updates");

// 使用异步迭代器接收消息
(async () => {
for await (const msg of sub) {
console.log(`收到消息: ${sc.decode(msg.data)}`);
}
})();

console.log("订阅者已启动,等待消息...");
})();

通配符订阅
// 订阅所有以 'user.' 开头的主题
const sub1 = nc.subscribe("user.*");

// 订阅所有以 'order.' 开头的主题及其子主题
const sub2 = nc.subscribe("order.>");

队列组订阅
// 多个订阅者可以加入同一个队列组实现负载均衡
const sub = nc.subscribe("task", { queue: "workers" });

完整示例
发布者 (publisher.js):
const { connect, StringCodec } = require('nats');

(async () => {
const nc = await connect({ servers: "nats://localhost:4222" });
const sc = StringCodec();

nc.publish("updates", sc.encode("Hello, NATS!"));
console.log("消息已发布");

await nc.drain();
})();

订阅者 (subscriber.js):
const { connect, StringCodec } = require('nats');

(async () => {
const nc = await connect({ servers: "nats://localhost:4222" });
const sc = StringCodec();

const sub = nc.subscribe("updates");

(async () => {
for await (const msg of sub) {
console.log(`收到: ${sc.decode(msg.data)}`);
}
})();

console.log("订阅者监听中...");
})();

运行步骤
1. 启动 NATS 服务器:
nats-server
# 或使用 Docker
docker run -d -p 4222:4222 nats

1. 运行订阅者:
node subscriber.js

1. 运行发布者:
node publisher.js

高级特性
- 异步迭代器:推荐使用 for await...of 循环处理消息
- 通配符:支持 *(匹配单个 token)和 >(匹配多个 token)
- 队列组:实现负载均衡的消息消费
- 连接管理:支持自动重连和连接状态监控
NATS 是一个高性能、轻量级的消息系统,非常适合微服务架构和分布式系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:38:42

零基础实战:Tiptap+Hocuspocus构建高效协作编辑系统

零基础实战:TiptapHocuspocus构建高效协作编辑系统 【免费下载链接】tiptap 项目地址: https://gitcode.com/gh_mirrors/tip/tiptap 还在为团队文档协作的混乱局面头疼?多人同时编辑时格式错乱、内容冲突、版本丢失?今天带你用最简方…

作者头像 李华
网站建设 2026/4/18 7:53:22

2、软件开发中的持续集成:从传统到敏捷的转变

软件开发中的持续集成:从传统到敏捷的转变 1. 软件开发生命周期概述 软件开发生命周期(SDLC)是规划、开发、测试和部署软件的过程。团队遵循一系列阶段,每个阶段都依赖前一阶段的成果。以下是SDLC的详细阶段: 1. 需求分析 :业务团队(主要由业务分析师组成)对项目的…

作者头像 李华
网站建设 2026/4/17 22:02:27

7、Jenkins 安装与新特性全解析

Jenkins 安装与新特性全解析 一、Jenkins 数据卷操作与实例创建 在使用 Docker 部署 Jenkins 时,我们可以通过数据卷来管理 Jenkins 的数据。以下是具体的操作步骤: 1. 查看数据卷 当我们执行相应操作后,会看到如下输出: | DRIVER | VOLUME NAME | | ---- | ---- | …

作者头像 李华
网站建设 2026/4/18 2:23:03

ZLUDA:在AMD显卡上运行CUDA应用的完整指南

ZLUDA:在AMD显卡上运行CUDA应用的完整指南 【免费下载链接】ZLUDA CUDA on AMD GPUs 项目地址: https://gitcode.com/gh_mirrors/zlu/ZLUDA ZLUDA是一个开源项目,专门为AMD GPU设计CUDA兼容层。该项目通过智能转译机制,让用户能够在AM…

作者头像 李华
网站建设 2026/4/18 7:44:05

18、使用 Jenkins 实现持续部署及相关配置指南

使用 Jenkins 实现持续部署及相关配置指南 1. 前期准备 Ubuntu/Debian 用户可能需要安装 dkms 包,以确保在下次 apt-get upgrade 期间 Linux 内核版本更改时,VirtualBox 主机内核模块(vboxdrv、vboxnetflt 和 vboxnetadp)能正确更新。可以通过 Synaptic 包管理器或以下…

作者头像 李华
网站建设 2026/4/16 15:05:18

省市区三级联动选择器:5分钟快速上手指南

省市区三级联动选择器:5分钟快速上手指南 【免费下载链接】city-picker 下拉面板式省市区三级联动jquery插件,视觉更清爽,交互体验更友好。 项目地址: https://gitcode.com/gh_mirrors/ci/city-picker 还在为复杂的地址选择功能而烦恼…

作者头像 李华