---

title: NATS JetStream流存储与消费语义实践

keywords:

  • NATS
  • JetStream
  • Stream
  • Consumer
  • Ack Policy
  • Retention

description: 使用JetStream进行流存储与拉取/推送消费,提供可验证的配置与命令实现可靠处理与保留策略。

date: 2025-11-26

categories:

  • 文章资讯
  • 技术教程

---

概述

  • 目标:通过JetStream管理消息保留与确认语义,支持拉取与推送消费,保障重试与有序处理。
  • 适用:事件流、审计日志、订单处理。

核心与实战

  • 创建Stream:
nats stream add ORDERS --subjects orders.* --storage file --retention limits --max-msgs=-1 --max-bytes=10GB --discard old
  • 创建Consumer(拉取,显式ACK):
nats consumer add ORDERS ORDERS_WORKERS --pull --ack explicit --deliver-policy all --max-deliver 5
  • 拉取与ACK:
nats consumer next ORDERS ORDERS_WORKERS --count 10 --ack
  • 推送模式(Delivery):
nats consumer add ORDERS ORDERS_PUSH --deliver subject process.orders --ack explicit
nats sub process.orders --ack

示例

  • 生产消息:
nats pub orders.created '{"id":"ORD-1","amount":10.5}'
  • 观察待处理与重试:
nats consumer info ORDERS ORDERS_WORKERS

验证与监控

  • 保留策略与存储:
  • 观察retentionmax-deliver影响;查看存储占用与丢弃策略。
  • 错误与重试:
  • 超过最大投递可路由到DLQ主题;记录失败原因与消息ID。
  • 指标:
  • JetStream监控消息待处理与已确认数;客户端观察处理延迟与错误率。

常见误区

  • 使用自动ACK导致未处理也确认;推送模式需显式ACK。
  • 不设max-deliver造成无限重试;应限次并配合DLQ。
  • 保留策略过大导致存储膨胀;需限制max-bytes与丢弃策略。

结语

  • JetStream为NATS提供可靠流存储与消费语义,通过合适的ACK与保留配置可稳定支撑关键事件处理。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部