# 概述 JetStream 为 NATS 增加持久化与流处理能力。本文提供 Stream/Consumer 的关键配置、Ack 与投递策略、保留与去重,以及指标与验证方法。 # Stream 与保留(已验证) - 定义主题与分段存储; - 保留策略:`limits`/`interest`/`workqueue`; - 压缩与分片:根据吞吐与容量配置文件与分段。 # Consumer 与投递 - Ack 策略:`explicit` 确认避免丢失; - 投递策略:`deliver_policy`(如 `all`/`last`); - 重试与退避:控制 `ack_wait` 与最大投递次数。 # 去重与一致性 - 使用消息 `id` 去重; - Exactly-once 接近实现:幂等消费结合 JetStream 序列保证不重不丢。 # 示例(片段) ```bash 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 能在流式场景稳定运行。

发表评论 取消回复