news 2026/3/2 10:56:53

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/2/28 22:19:05

B站视频下载神器:BilibiliDown全方位使用指南

B站视频下载神器:BilibiliDown全方位使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibi…

作者头像 李华
网站建设 2026/2/25 15:17:01

Cursor AI编程助手试用限制的终极解决方案:从原理到实践

Cursor AI编程助手试用限制的终极解决方案:从原理到实践 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. W…

作者头像 李华
网站建设 2026/2/26 19:47:21

从视频到3D动作:开启低成本动作捕捉新时代

🎯 痛点直击:传统动作捕捉的三大难题 【免费下载链接】VideoTo3dPoseAndBvh 项目地址: https://gitcode.com/gh_mirrors/vi/VideoTo3dPoseAndBvh "为什么我的动画角色动作如此僵硬?" 这可能是每个动画师都曾遇到的困扰。传…

作者头像 李华
网站建设 2026/2/26 8:27:42

11、Jenkins配置与分布式构建全解析

Jenkins配置与分布式构建全解析 1. Jenkins容器启动 在启动Jenkins容器之前,我们可以查看已有的Docker镜像,执行命令后输出如下: REPOSITORY TAG IMAGE ID CREATED SIZE jenkins/jenkins 2.73.1 c8a24e6775ea 24 hours ago …

作者头像 李华
网站建设 2026/3/2 0:17:33

16、Jenkins 实现持续集成与持续交付指南

Jenkins 实现持续集成与持续交付指南 1. 配置多分支管道 指定仓库所有者 :在“Owner”字段中,指定你的 GitHub 组织或用户账户名称。此时,“Repository”字段将列出你 GitHub 账户上的所有仓库。选择“hello-world-greeting”仓库。 设置构建配置 :滚动到“Build Conf…

作者头像 李华
网站建设 2026/2/24 4:35:58

GPT-SoVITS语音合成在智能家居中的落地场景

GPT-SoVITS语音合成在智能家居中的落地场景 在智能音箱已经走进千家万户的今天,我们对“语音助手”的期待早已不再满足于“能听懂、会回答”。用户更希望听到的是熟悉的声音——比如妈妈讲睡前故事、父亲提醒天气变化,甚至用已故亲人的音色留下一段温暖的…

作者头像 李华