概述目标:通过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 验证与监控保留策略与存储:观察`retention`与`max-deliver`影响;查看存储占用与丢弃策略。错误与重试:超过最大投递可路由到DLQ主题;记录失败原因与消息ID。指标:JetStream监控消息待处理与已确认数;客户端观察处理延迟与错误率。常见误区使用自动ACK导致未处理也确认;推送模式需显式ACK。不设`max-deliver`造成无限重试;应限次并配合DLQ。保留策略过大导致存储膨胀;需限制`max-bytes`与丢弃策略。结语JetStream为NATS提供可靠流存储与消费语义,通过合适的ACK与保留配置可稳定支撑关键事件处理。

发表评论 取消回复