---
title: NATS JetStream流式消息与持久化实践
keywords:
- NATS
- JetStream
- Stream
- Consumer
- Ack
- Deliver Policy
- Retention
- Exactly-once
- 去重
- 监控
description: 使用 NATS JetStream 构建流式消息与持久化存储,配置 Stream/Consumer、确认与投递策略、保留与去重,并提供验证与监控方法。
date: 2025-11-25
categories:
- 文章资讯
- 技术教程
---
概述
JetStream 为 NATS 增加持久化与流处理能力。本文提供 Stream/Consumer 的关键配置、Ack 与投递策略、保留与去重,以及指标与验证方法。
Stream 与保留(已验证)
- 定义主题与分段存储;
- 保留策略:
limits/interest/workqueue; - 压缩与分片:根据吞吐与容量配置文件与分段。
Consumer 与投递
- Ack 策略:
explicit确认避免丢失; - 投递策略:
deliver_policy(如all/last); - 重试与退避:控制
ack_wait与最大投递次数。
去重与一致性
- 使用消息
id去重; - Exactly-once 接近实现:幂等消费结合 JetStream 序列保证不重不丢。
示例(片段)
nats stream add orders --subjects orders.* --retention limits --max-msgs=100000
nats consumer add orders worker --ack explicit --deliver all --ack-wait=30s
验证与监控
- 指标:未确认消息、投递次数、延迟与错误率;
- 回归:发布前后端到端耗时与丢失/重复比对;
常见误区
- 使用自动 ack 导致异常丢失;
- 不合理保留策略造成存储膨胀或丢失;
结语
以合理的 Stream/Consumer 配置、明确的 Ack 与投递策略、保留与去重配合,并以监控与回归验证,JetStream 能在流式场景稳定运行。

发表评论 取消回复