NATS.Net JetStream入门:5步创建Stream与Consumer实现消息持久化 📅 发布时间:2026/8/21 18:45:52 👁 浏览次数: NATS.Net JetStream入门5步创建Stream与Consumer实现消息持久化【免费下载链接】nats.netThe official C# Client for NATS项目地址: https://gitcode.com/gh_mirrors/na/nats.netNATS.Net 是 NATS 官方推出的 C# 客户端库支持 .NET Standard 2.0 及以上版本而 JetStream 是 NATS 内置的分布式消息持久化系统。这篇 NATS.Net JetStream入门教程面向零基础新手用 5 个简单步骤带你创建 Stream 与 Consumer实现可靠的消息持久化——即使发布者下线、消费者重启消息也不会丢失。JetStream 是什么为什么需要消息持久化普通 NATS 发布/订阅模式有一个限制订阅者不在线时发布的消息会直接丢失。JetStream 正是为解决这个问题而生——它内置于 nats-server无需额外部署只需一个参数即可开启。JetStream 的两个核心概念Stream消息流相当于一个消息仓库把发布到指定主题Subject的消息持久化存储起来Consumer消费者Stream 上的视图负责跟踪每条消息的投递和确认ACK状态。 换句话说Stream 负责存Consumer 负责读两者配合就构成了完整的消息持久化链路。第1步启动支持 JetStream 的 NATS 服务器JetStream 是服务器端能力首先需要启动一个开启 JetStream 的 NATS 服务。两种方式任选其一方式一直接运行需先安装 nats-servernats-server -js方式二使用 Docker最省事docker run -p 4222:4222 nats -js看到JetStream is enabled的日志即表示持久化功能已就绪。生产环境建议使用 3 或 5 节点集群实现容错开发调试单节点完全够用。第2步创建项目并安装 NATS.Net 包打开终端创建控制台项目并安装聚合包dotnet new console -n JetStreamDemo cd JetStreamDemo dotnet add package NATS.NetNATS.Net 是一个元包Meta Package一次安装即可获得 Core、JetStream、KeyValueStore、ObjectStore 等全部子库能力无需分别引用。第3步连接服务器并创建 JetStream 上下文JetStream 上下文INatsJSContext是所有流管理操作的入口。使用简化的NatsClient只需要两行代码await using var nc new NatsClient(); // 默认连接 nats://localhost:4222 var js nc.CreateJetStreamContext(); // 创建 JetStream 上下文这一模式在官方示例中随处可见例如 tests/NATS.Net.DocsExamples/JetStream/IntroPage.cs 就是从这里开始的。第4步创建 Stream 实现消息持久化创建名为ORDERS的 Stream并让它监听orders.通配主题即以orders.开头的所有主题如orders.new.1await js.CreateStreamAsync(new StreamConfig( name: ORDERS, subjects: [orders.]));Stream 创建成功后向对应主题发布的消息就会被持久化存储。一定要使用 JetStream 上下文发布这样能收到服务器返回的存储确认var ack await js.PublishAsync(orders.new.1, order); ack.EnsureSuccess(); // 确认消息已成功落盘StreamConfig还支持配置保留策略、存储方式内存/文件、消息上限等完整字段可参考 src/NATS.Client.JetStream/Models/StreamConfig.cs。第5步创建 Consumer 并消费持久化消息创建名为order_processor的 Consumer重复调用会自动更新或复用然后循环消费var consumer await js.CreateOrUpdateConsumerAsync( stream: ORDERS, new ConsumerConfig(order_processor)); await foreach (var msg in consumer.ConsumeAsyncOrder()) { Console.WriteLine($处理订单: {msg.Data.Id}); await msg.AckAsync(); // 手动确认处理成功后才算消费完成 }✨ 关键点只有调用AckAsync()确认后消息才会从待处理列表移除若消费者崩溃未确认消息会被重新投递这正是 JetStream 消息持久化可靠性的体现。Consumer 还支持三种消费模式可按场景选用Consume持续批量推送消费适合长时间运行的任务Fetch按批次拉取指定数量消息如MaxMsgs 1000Next单条拉取下一条消息。更多消费写法可参考 tests/NATS.Net.DocsExamples/JetStream/ConsumePage.cs完整的可运行示例见 examples/Example.JetStream.PullConsumer/Program.cs。进阶技巧Durable 与 Ephemeral Consumer创建 Consumer 时设置了DurableName即为持久消费者断开后状态保留、可随时恢复不设置则创建临时消费者Ephemeral空闲一段时间后会被服务器自动清理。var durable new ConsumerConfig { Name durable_processor, DurableName durable_processor, };日常开发建议先跑通入门示例再深入调优。你也可以通过git clone https://gitcode.com/gh_mirrors/na/nats.net获取完整仓库其中examples/目录下有覆盖拉取消费、JetStream、KV 存储等场景的现成代码可直接运行。总结通过以上 5 步你已经完成了 NATS.Net JetStream 的入门闭环开启服务器 → 安装客户端 → 建立上下文 → 创建 Stream 持久化消息 → 创建 Consumer 可靠消费。借助 JetStream你的应用可以轻松获得消息持久化、重放、限流等生产级能力而这一切都基于官方 C# 客户端 NATS.Net上手成本极低。下一步建议阅读仓库中的 JetStream 文档目录tools/site_src/documentation/jetstream/深入了解发布重试、流管理、有序消费等进阶特性。【免费下载链接】nats.netThe official C# Client for NATS项目地址: https://gitcode.com/gh_mirrors/na/nats.net创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考