用途:为使用 Scala 进行 Kafka 开发的场景提供编码规范与最佳实践,帮助规避消息丢失、重复处理等问题。
主要能力:约定所有主题名称与配置值使用 Typesafe Config 或 pure-config 管理;序列化沿用项目所用的 JSON、AVRO 等库的 Format 或 Codec;Streams 逻辑须用 TopologyTestDriver 做单元测试,并补充针对本地 Kafka 的集成测试。
核心规则(Iron Laws):生产端始终显式设置 acks=all 与 min.insync.replicas=2,默认 acks=1 在副本同步前 leader 故障会丢消息,acks=0 无投递保证;绝不在处理完成前提交 offset,否则提交后消费崩溃会导致数据丢失,应在处理成功后提交;消费者必须保持幂等(按键或序列号去重),因为至少一次投递会在重启时带来重复;生产环境的存量主题不要用 auto.offset.reset=earliest,首次启动会重放全部历史,新消费组建议用 latest;max.poll.interval.ms 必须大于最长处理时间,否则消费者被踢出组触发再均衡与重复处理。
反模式对照:acks=1 用于关键数据会因 leader 未复制即故障而丢失,应改用 acks=all + min.insync.replicas=2 并配合幂等生产者重试;先提交 offset 再处理会静默丢消息,应先完整持久化再提交或使用事务实现精确一次;非幂等逻辑在再均衡和重启中会破坏状态,应按 message key/sequence 去重或使用幂等数据库写入;对存量主题设置 earliest 会重放海量事件;默认 300 秒的 max.poll.interval.ms 对慢处理会中途触发再均衡。
记忆协议(强制):开始前读取 cat .claude/context/memory/learnings.md,完成后记录新发现的模式或例外;假设上下文可能被重置,未写入记忆的内容视为未发生。
限制:资料未提供具体安装命令、版本要求、依赖清单或与特定框架的集成细节。